@vscode-elements/elements 1.16.1 → 1.16.2-pre.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.
- package/custom-elements.json +1199 -687
- package/dist/bundled.js +885 -809
- package/dist/includes/VscElement.d.ts.map +1 -1
- package/dist/includes/VscElement.js +3 -1
- package/dist/includes/VscElement.js.map +1 -1
- package/dist/includes/vscode-select/OptionListController.d.ts +61 -0
- package/dist/includes/vscode-select/OptionListController.d.ts.map +1 -0
- package/dist/includes/vscode-select/OptionListController.js +373 -0
- package/dist/includes/vscode-select/OptionListController.js.map +1 -0
- package/dist/includes/vscode-select/helpers.d.ts +2 -2
- package/dist/includes/vscode-select/helpers.js.map +1 -1
- package/dist/includes/vscode-select/styles.d.ts.map +1 -1
- package/dist/includes/vscode-select/styles.js +19 -23
- package/dist/includes/vscode-select/styles.js.map +1 -1
- package/dist/includes/vscode-select/template-elements.d.ts +1 -0
- package/dist/includes/vscode-select/template-elements.d.ts.map +1 -1
- package/dist/includes/vscode-select/template-elements.js +14 -1
- package/dist/includes/vscode-select/template-elements.js.map +1 -1
- package/dist/includes/vscode-select/types.d.ts +11 -7
- package/dist/includes/vscode-select/types.d.ts.map +1 -1
- package/dist/includes/vscode-select/types.js.map +1 -1
- package/dist/includes/vscode-select/vscode-select-base.d.ts +25 -31
- package/dist/includes/vscode-select/vscode-select-base.d.ts.map +1 -1
- package/dist/includes/vscode-select/vscode-select-base.js +214 -324
- package/dist/includes/vscode-select/vscode-select-base.js.map +1 -1
- package/dist/vscode-button/vscode-button.styles.js +1 -1
- package/dist/vscode-button/vscode-button.styles.js.map +1 -1
- package/dist/vscode-button-group/vscode-button-group.styles.d.ts.map +1 -1
- package/dist/vscode-button-group/vscode-button-group.styles.js +2 -0
- package/dist/vscode-button-group/vscode-button-group.styles.js.map +1 -1
- package/dist/vscode-icon/vscode-icon.d.ts.map +1 -1
- package/dist/vscode-icon/vscode-icon.js +1 -0
- package/dist/vscode-icon/vscode-icon.js.map +1 -1
- package/dist/vscode-label/vscode-label.d.ts.map +1 -1
- package/dist/vscode-label/vscode-label.js +9 -7
- package/dist/vscode-label/vscode-label.js.map +1 -1
- package/dist/vscode-multi-select/vscode-multi-select.d.ts +9 -1
- package/dist/vscode-multi-select/vscode-multi-select.d.ts.map +1 -1
- package/dist/vscode-multi-select/vscode-multi-select.js +125 -65
- package/dist/vscode-multi-select/vscode-multi-select.js.map +1 -1
- package/dist/vscode-single-select/vscode-single-select.d.ts +4 -4
- package/dist/vscode-single-select/vscode-single-select.d.ts.map +1 -1
- package/dist/vscode-single-select/vscode-single-select.js +140 -74
- package/dist/vscode-single-select/vscode-single-select.js.map +1 -1
- package/package.json +5 -4
- package/vscode.css-custom-data.json +2 -2
- package/vscode.html-custom-data.json +19 -9
|
@@ -6,6 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { html, LitElement, nothing } from 'lit';
|
|
8
8
|
import { property, query } from 'lit/decorators.js';
|
|
9
|
+
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
9
10
|
import { customElement } from '../includes/VscElement.js';
|
|
10
11
|
import { chevronDownIcon } from '../includes/vscode-select/template-elements.js';
|
|
11
12
|
import { VscodeSelectBase } from '../includes/vscode-select/vscode-select-base.js';
|
|
@@ -47,37 +48,14 @@ import styles from './vscode-multi-select.styles.js';
|
|
|
47
48
|
*/
|
|
48
49
|
let VscodeMultiSelect = class VscodeMultiSelect extends VscodeSelectBase {
|
|
49
50
|
set selectedIndexes(val) {
|
|
50
|
-
|
|
51
|
-
val.forEach((v) => {
|
|
52
|
-
if (typeof this._options[v] !== 'undefined') {
|
|
53
|
-
if (!newIndexes.includes(v)) {
|
|
54
|
-
this._options[v].selected = true;
|
|
55
|
-
newIndexes.push(v);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
this._selectedIndexes = newIndexes;
|
|
51
|
+
this._opts.selectedIndexes = val;
|
|
60
52
|
}
|
|
61
53
|
get selectedIndexes() {
|
|
62
|
-
return this.
|
|
54
|
+
return this._opts.selectedIndexes;
|
|
63
55
|
}
|
|
64
56
|
set value(val) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
: [String(val)];
|
|
68
|
-
this._values = [];
|
|
69
|
-
this._selectedIndexes.forEach((i) => {
|
|
70
|
-
this._options[i].selected = false;
|
|
71
|
-
});
|
|
72
|
-
this._selectedIndexes = [];
|
|
73
|
-
sanitizedVal.forEach((v) => {
|
|
74
|
-
if (typeof this._valueOptionIndexMap[v] === 'number') {
|
|
75
|
-
this._selectedIndexes.push(this._valueOptionIndexMap[v]);
|
|
76
|
-
this._options[this._valueOptionIndexMap[v]].selected = true;
|
|
77
|
-
this._values.push(v);
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
if (this._selectedIndexes.length > 0) {
|
|
57
|
+
this._opts.multiSelectValue = val;
|
|
58
|
+
if (this._opts.selectedIndexes.length > 0) {
|
|
81
59
|
this._requestedValueToSetLater = [];
|
|
82
60
|
}
|
|
83
61
|
else {
|
|
@@ -87,7 +65,7 @@ let VscodeMultiSelect = class VscodeMultiSelect extends VscodeSelectBase {
|
|
|
87
65
|
this._manageRequired();
|
|
88
66
|
}
|
|
89
67
|
get value() {
|
|
90
|
-
return this.
|
|
68
|
+
return this._opts.multiSelectValue;
|
|
91
69
|
}
|
|
92
70
|
get form() {
|
|
93
71
|
return this._internals.form;
|
|
@@ -111,6 +89,12 @@ let VscodeMultiSelect = class VscodeMultiSelect extends VscodeSelectBase {
|
|
|
111
89
|
reportValidity() {
|
|
112
90
|
return this._internals.reportValidity();
|
|
113
91
|
}
|
|
92
|
+
selectAll() {
|
|
93
|
+
this._opts.selectAll();
|
|
94
|
+
}
|
|
95
|
+
selectNone() {
|
|
96
|
+
this._opts.selectNone();
|
|
97
|
+
}
|
|
114
98
|
constructor() {
|
|
115
99
|
super();
|
|
116
100
|
this.defaultValue = [];
|
|
@@ -134,26 +118,12 @@ let VscodeMultiSelect = class VscodeMultiSelect extends VscodeSelectBase {
|
|
|
134
118
|
return;
|
|
135
119
|
}
|
|
136
120
|
const index = Number(optEl.dataset.index);
|
|
137
|
-
|
|
138
|
-
if (this._options[index].disabled) {
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
this._options[index].selected = !this._options[index].selected;
|
|
142
|
-
}
|
|
143
|
-
this._selectedIndexes = [];
|
|
144
|
-
this._values = [];
|
|
145
|
-
this._options.forEach((op) => {
|
|
146
|
-
if (op.selected) {
|
|
147
|
-
this._selectedIndexes.push(op.index);
|
|
148
|
-
this._values.push(op.value);
|
|
149
|
-
}
|
|
150
|
-
});
|
|
121
|
+
this._opts.toggleOptionSelected(index);
|
|
151
122
|
this._setFormValue();
|
|
152
123
|
this._manageRequired();
|
|
153
124
|
this._dispatchChangeEvent();
|
|
154
125
|
};
|
|
155
|
-
|
|
156
|
-
this._multiple = true;
|
|
126
|
+
this._opts.multiSelect = true;
|
|
157
127
|
this._internals = this.attachInternals();
|
|
158
128
|
}
|
|
159
129
|
connectedCallback() {
|
|
@@ -182,6 +152,24 @@ let VscodeMultiSelect = class VscodeMultiSelect extends VscodeSelectBase {
|
|
|
182
152
|
this.value = val;
|
|
183
153
|
}
|
|
184
154
|
}
|
|
155
|
+
_dispatchChangeEvent() {
|
|
156
|
+
/** @deprecated */
|
|
157
|
+
this.dispatchEvent(new CustomEvent('vsc-change', {
|
|
158
|
+
detail: {
|
|
159
|
+
selectedIndexes: this._opts.selectedIndexes,
|
|
160
|
+
value: this._opts.multiSelectValue,
|
|
161
|
+
},
|
|
162
|
+
}));
|
|
163
|
+
super._dispatchChangeEvent();
|
|
164
|
+
}
|
|
165
|
+
_onFaceClick() {
|
|
166
|
+
super._onFaceClick();
|
|
167
|
+
this._opts.activeIndex = 0;
|
|
168
|
+
}
|
|
169
|
+
_toggleComboboxDropdown() {
|
|
170
|
+
super._toggleComboboxDropdown();
|
|
171
|
+
this._opts.activeIndex = -1;
|
|
172
|
+
}
|
|
185
173
|
_manageRequired() {
|
|
186
174
|
const { value } = this;
|
|
187
175
|
if (value.length === 0 && this.required) {
|
|
@@ -208,35 +196,47 @@ let VscodeMultiSelect = class VscodeMultiSelect extends VscodeSelectBase {
|
|
|
208
196
|
this._dispatchChangeEvent();
|
|
209
197
|
const opCreateEvent = new CustomEvent('vsc-multi-select-create-option', { detail: { value: this._options[nextIndex]?.value ?? '' } });
|
|
210
198
|
this.dispatchEvent(opCreateEvent);
|
|
211
|
-
this.
|
|
199
|
+
this.open = false;
|
|
212
200
|
this._isPlaceholderOptionActive = false;
|
|
213
201
|
}
|
|
202
|
+
//#region event handlers
|
|
214
203
|
_onSlotChange() {
|
|
215
204
|
super._onSlotChange();
|
|
216
205
|
if (this._requestedValueToSetLater.length > 0) {
|
|
217
|
-
this.
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
206
|
+
this._opts.expandMultiSelection(this._requestedValueToSetLater);
|
|
207
|
+
this._requestedValueToSetLater = this._requestedValueToSetLater.filter((v) => this._opts.findOptionIndex(v) === -1);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
_onEnterKeyDown(ev) {
|
|
211
|
+
super._onEnterKeyDown(ev);
|
|
212
|
+
if (!this.open) {
|
|
213
|
+
this._opts.filterPattern = '';
|
|
214
|
+
this.open = true;
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
if (this._isPlaceholderOptionActive) {
|
|
218
|
+
this._createAndSelectSuggestedOption();
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
this._opts.toggleActiveMultiselectOption();
|
|
222
|
+
this._setFormValue();
|
|
223
|
+
this._manageRequired();
|
|
224
|
+
this._dispatchChangeEvent();
|
|
225
|
+
}
|
|
226
226
|
}
|
|
227
227
|
}
|
|
228
228
|
_onMultiAcceptClick() {
|
|
229
|
-
this.
|
|
229
|
+
this.open = false;
|
|
230
230
|
}
|
|
231
231
|
_onMultiDeselectAllClick() {
|
|
232
|
-
this.
|
|
232
|
+
this._opts.selectedIndexes = [];
|
|
233
233
|
this._values = [];
|
|
234
234
|
this._options = this._options.map((op) => ({ ...op, selected: false }));
|
|
235
235
|
this._manageRequired();
|
|
236
236
|
this._dispatchChangeEvent();
|
|
237
237
|
}
|
|
238
238
|
_onMultiSelectAllClick() {
|
|
239
|
-
this.
|
|
239
|
+
this._opts.selectedIndexes = [];
|
|
240
240
|
this._values = [];
|
|
241
241
|
this._options = this._options.map((op) => ({ ...op, selected: true }));
|
|
242
242
|
this._options.forEach((op, index) => {
|
|
@@ -247,26 +247,77 @@ let VscodeMultiSelect = class VscodeMultiSelect extends VscodeSelectBase {
|
|
|
247
247
|
this._setFormValue();
|
|
248
248
|
this._manageRequired();
|
|
249
249
|
}
|
|
250
|
+
//#endregion
|
|
251
|
+
//#region render functions
|
|
250
252
|
_renderLabel() {
|
|
251
|
-
switch (this.
|
|
253
|
+
switch (this._opts.selectedIndexes.length) {
|
|
252
254
|
case 0:
|
|
253
|
-
return html `<span class="select-face-badge no-item"
|
|
254
|
-
>No items selected</span
|
|
255
|
-
>`;
|
|
256
|
-
case 1:
|
|
257
|
-
return html `<span class="select-face-badge">1 item selected</span>`;
|
|
255
|
+
return html `<span class="select-face-badge no-item">0 Selected</span>`;
|
|
258
256
|
default:
|
|
259
257
|
return html `<span class="select-face-badge"
|
|
260
|
-
>${this.
|
|
258
|
+
>${this._opts.selectedIndexes.length} Selected</span
|
|
261
259
|
>`;
|
|
262
260
|
}
|
|
263
261
|
}
|
|
262
|
+
_renderComboboxFace() {
|
|
263
|
+
let inputVal = '';
|
|
264
|
+
if (this._isBeingFiltered) {
|
|
265
|
+
inputVal = this._opts.filterPattern;
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
const op = this._opts.getSelectedOption();
|
|
269
|
+
inputVal = op?.label ?? '';
|
|
270
|
+
}
|
|
271
|
+
const activeDescendant = this._opts.activeIndex > -1 ? `op-${this._opts.activeIndex}` : '';
|
|
272
|
+
const expanded = this.open ? 'true' : 'false';
|
|
273
|
+
return html `
|
|
274
|
+
<div class="combobox-face face">
|
|
275
|
+
${this._opts.multiSelect ? this._renderLabel() : nothing}
|
|
276
|
+
<input
|
|
277
|
+
aria-activedescendant=${activeDescendant}
|
|
278
|
+
aria-autocomplete="list"
|
|
279
|
+
aria-controls="select-listbox"
|
|
280
|
+
aria-expanded=${expanded}
|
|
281
|
+
aria-haspopup="listbox"
|
|
282
|
+
aria-label=${ifDefined(this.label)}
|
|
283
|
+
class="combobox-input"
|
|
284
|
+
role="combobox"
|
|
285
|
+
spellcheck="false"
|
|
286
|
+
type="text"
|
|
287
|
+
autocomplete="off"
|
|
288
|
+
.value=${inputVal}
|
|
289
|
+
@focus=${this._onComboboxInputFocus}
|
|
290
|
+
@blur=${this._onComboboxInputBlur}
|
|
291
|
+
@input=${this._onComboboxInputInput}
|
|
292
|
+
@click=${this._onComboboxInputClick}
|
|
293
|
+
@keydown=${this._onComboboxInputSpaceKeyDown}
|
|
294
|
+
>
|
|
295
|
+
<button
|
|
296
|
+
aria-label="Open the list of options"
|
|
297
|
+
class="combobox-button"
|
|
298
|
+
type="button"
|
|
299
|
+
@click=${this._onComboboxButtonClick}
|
|
300
|
+
@keydown=${this._onComboboxButtonKeyDown}
|
|
301
|
+
tabindex="-1"
|
|
302
|
+
>
|
|
303
|
+
${chevronDownIcon}
|
|
304
|
+
</button>
|
|
305
|
+
</div>
|
|
306
|
+
`;
|
|
307
|
+
}
|
|
264
308
|
_renderSelectFace() {
|
|
309
|
+
const activeDescendant = this._opts.activeIndex > -1 ? `op-${this._opts.activeIndex}` : '';
|
|
310
|
+
const expanded = this.open ? 'true' : 'false';
|
|
265
311
|
return html `
|
|
266
312
|
<div
|
|
313
|
+
aria-activedescendant=${ifDefined(this._opts.multiSelect ? undefined : activeDescendant)}
|
|
314
|
+
aria-controls="select-listbox"
|
|
315
|
+
aria-expanded=${ifDefined(this._opts.multiSelect ? undefined : expanded)}
|
|
316
|
+
aria-haspopup="listbox"
|
|
317
|
+
aria-label=${ifDefined(this.label ?? undefined)}
|
|
267
318
|
class="select-face face multiselect"
|
|
268
319
|
@click=${this._onFaceClick}
|
|
269
|
-
|
|
320
|
+
.tabIndex=${this.disabled ? -1 : 0}
|
|
270
321
|
>
|
|
271
322
|
${this._renderLabel()} ${chevronDownIcon}
|
|
272
323
|
</div>
|
|
@@ -303,6 +354,15 @@ let VscodeMultiSelect = class VscodeMultiSelect extends VscodeSelectBase {
|
|
|
303
354
|
`
|
|
304
355
|
: html `${nothing}`;
|
|
305
356
|
}
|
|
357
|
+
render() {
|
|
358
|
+
return html `
|
|
359
|
+
<div class="multi-select">
|
|
360
|
+
<slot class="main-slot" @slotchange=${this._onSlotChange}></slot>
|
|
361
|
+
${this.combobox ? this._renderComboboxFace() : this._renderSelectFace()}
|
|
362
|
+
${this._renderDropdown()}
|
|
363
|
+
</div>
|
|
364
|
+
`;
|
|
365
|
+
}
|
|
306
366
|
};
|
|
307
367
|
VscodeMultiSelect.styles = styles;
|
|
308
368
|
/** @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vscode-multi-select.js","sourceRoot":"","sources":["../../src/vscode-multi-select/vscode-multi-select.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAiB,MAAM,KAAK,CAAC;AAC9D,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAC,eAAe,EAAC,MAAM,gDAAgD,CAAC;AAC/E,OAAO,EAAC,gBAAgB,EAAC,MAAM,iDAAiD,CAAC;AACjF,OAAO,MAAM,MAAM,iCAAiC,CAAC;AAKrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEI,IAAM,iBAAiB,GAAvB,MAAM,iBACX,SAAQ,gBAAgB;IAuBxB,IAAI,eAAe,CAAC,GAAa;QAC/B,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAChB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC;gBAC5C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACjC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC;IACrC,CAAC;IACD,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAGD,IAAI,KAAK,CAAC,GAAsB;QAC9B,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YACrC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAElB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAClC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAE3B,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACzB,IAAI,OAAO,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACrD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAC5D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,yBAAyB,GAAG,EAAE,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IAC9B,CAAC;IAED,gBAAgB;IAChB,IAAI,IAAI;QACN,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;IAC3C,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;IACtC,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;IACzC,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;IAC1C,CAAC;IAID;QACE,KAAK,EAAE,CAAC;QA7FV,iBAAY,GAAa,EAAE,CAAC;QAG5B,aAAQ,GAAG,KAAK,CAAC;QAGjB,SAAI,GAAuB,SAAS,CAAC;QA4J7B,8BAAyB,GAAa,EAAE,CAAC;QAmC9B,mBAAc,GAAG,CAAC,EAAc,EAAE,EAAE;YACrD,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;gBACrC,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;oBACpB,OAAQ,EAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAClD,CAAC;gBAED,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO;YACT,CAAC;YAED,MAAM,mBAAmB,GAAI,KAAqB,CAAC,SAAS,CAAC,QAAQ,CACnE,aAAa,CACd,CAAC;YAEF,IAAI,mBAAmB,EAAE,CAAC;gBACxB,IAAI,CAAC,+BAA+B,EAAE,CAAC;gBACvC,OAAO;YACT,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,CAAE,KAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAE3D,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAClC,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;YACjE,CAAC;YAED,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAElB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC3B,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;oBAChB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;oBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC,CAAC;QArJA,gBAAgB;QAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3C,CAAC;IAEQ,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IAChB,iBAAiB;QACf,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IAChB,wBAAwB,CACtB,KAAe,EACf,KAAiC;QAEjC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAErE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAKO,gBAAgB;QACtB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrE,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACnB,CAAC;IACH,CAAC;IAEkB,eAAe;QAChC,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI,CAAC;QACrB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,WAAW,CACzB;gBACE,YAAY,EAAE,IAAI;aACnB,EACD,oCAAoC,EACpC,IAAI,CAAC,YAAY,CAClB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAEO,aAAa;QACnB,MAAM,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;QAE1B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACzB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IAIkB,KAAK,CAAC,+BAA+B;QACtD,KAAK,CAAC,+BAA+B,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAEhD,MAAM,IAAI,CAAC,cAAc,CAAC;QAE1B,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,MAAM,aAAa,GAAoC,IAAI,WAAW,CACpE,gCAAgC,EAChC,EAAC,MAAM,EAAE,EAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,EAAE,EAAC,EAAC,CACzD,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAClC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC;IAC1C,CAAC;IAEkB,aAAa;QAC9B,KAAK,CAAC,aAAa,EAAE,CAAC;QAEtB,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC5B,IAAI,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBAC3B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACjC,IAAI,CAAC,yBAAyB;wBAC5B,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAkDO,mBAAmB;QACzB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAEO,wBAAwB;QAC9B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAEO,sBAAsB;QAC5B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;YAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEO,YAAY;QAClB,QAAQ,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;YACrC,KAAK,CAAC;gBACJ,OAAO,IAAI,CAAA;;UAET,CAAC;YACL,KAAK,CAAC;gBACJ,OAAO,IAAI,CAAA,wDAAwD,CAAC;YACtE;gBACE,OAAO,IAAI,CAAA;aACN,IAAI,CAAC,gBAAgB,CAAC,MAAM;UAC/B,CAAC;QACP,CAAC;IACH,CAAC;IAEkB,iBAAiB;QAClC,OAAO,IAAI,CAAA;;;iBAGE,IAAI,CAAC,YAAY;mBACf,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;UAEpC,IAAI,CAAC,YAAY,EAAE,IAAI,eAAe;;KAE3C,CAAC;IACJ,CAAC;IAEkB,uBAAuB;QACxC,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC;YACrC,CAAC,CAAC,IAAI,CAAA;;;;uBAIW,IAAI,CAAC,sBAAsB;;;;;;;;;uBAS3B,IAAI,CAAC,wBAAwB;;;;;;;;;uBAS7B,IAAI,CAAC,mBAAmB;;;;SAItC;YACH,CAAC,CAAC,IAAI,CAAA,GAAG,OAAO,EAAE,CAAC;IACvB,CAAC;;AAnVe,wBAAM,GAAG,MAAM,AAAT,CAAU;AAEhC,gBAAgB;AACA,mCAAiB,GAAmB;IAClD,GAAG,UAAU,CAAC,iBAAiB;IAC/B,cAAc,EAAE,IAAI;CACrB,AAHgC,CAG/B;AAEK,gCAAc,GAAG,IAAI,AAAP,CAAQ;AAG7B;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,EAAC,CAAC;uDACxB;AAG5B;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;mDACxB;AAGjB;IADC,QAAQ,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC;+CACW;AAGrC;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC;wDAczC;AAMD;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC;8CA6BvB;AAwEO;IADP,KAAK,CAAC,OAAO,CAAC;uDACuB;AA/I3B,iBAAiB;IAD7B,aAAa,CAAC,qBAAqB,CAAC;GACxB,iBAAiB,CAwV7B","sourcesContent":["import {html, LitElement, nothing, TemplateResult} from 'lit';\nimport {property, query} from 'lit/decorators.js';\nimport {customElement} from '../includes/VscElement.js';\nimport {chevronDownIcon} from '../includes/vscode-select/template-elements.js';\nimport {VscodeSelectBase} from '../includes/vscode-select/vscode-select-base.js';\nimport styles from './vscode-multi-select.styles.js';\nimport {AssociatedFormControl} from '../includes/AssociatedFormControl.js';\n\nexport type VscMultiSelectCreateOptionEvent = CustomEvent<{value: string}>;\n\n/**\n * Allows to select multiple items from a list of options.\n *\n * When participating in a form, it supports the `:invalid` pseudo class. Otherwise the error styles\n * can be applied through the `invalid` property.\n *\n * @tag vscode-multi-select\n *\n * @prop {boolean} invalid\n * @attr {boolean} invalid\n * @attr name - Name which is used as a variable name in the data of the form-container.\n *\n * @cssprop [--dropdown-z-index=2]\n * @cssprop [--vscode-badge-background=#616161]\n * @cssprop [--vscode-badge-foreground=#f8f8f8]\n * @cssprop [--vscode-settings-dropdownBorder=#3c3c3c]\n * @cssprop [--vscode-settings-checkboxBackground=#313131]\n * @cssprop [--vscode-settings-dropdownBackground=#313131]\n * @cssprop [--vscode-settings-dropdownForeground=#cccccc]\n * @cssprop [--vscode-settings-dropdownListBorder=#454545]\n * @cssprop [--vscode-focusBorder=#0078d4]\n * @cssprop [--vscode-foreground=#cccccc]\n * @cssprop [--vscode-font-family=sans-serif]\n * @cssprop [--vscode-font-size=13px]\n * @cssprop [--vscode-font-weight=normal]\n * @cssprop [--vscode-inputValidation-errorBackground=#5a1d1d]\n * @cssprop [--vscode-inputValidation-errorBorder=#be1100]\n * @cssprop [--vscode-list-activeSelectionBackground=#04395e]\n * @cssprop [--vscode-list-activeSelectionForeground=#ffffff]\n * @cssprop [--vscode-list-focusOutline=#0078d4]\n * @cssprop [--vscode-list-focusHighlightForeground=#2aaaff]\n * @cssprop [--vscode-list-highlightForeground=#2aaaff]\n * @cssprop [--vscode-list-hoverBackground=#2a2d2e]\n * @cssprop [--vscode-list-hoverForeground=#ffffff]\n */\n@customElement('vscode-multi-select')\nexport class VscodeMultiSelect\n extends VscodeSelectBase\n implements AssociatedFormControl\n{\n static override styles = styles;\n\n /** @internal */\n static override shadowRootOptions: ShadowRootInit = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n static formAssociated = true;\n\n @property({type: Array, attribute: 'default-value'})\n defaultValue: string[] = [];\n\n @property({type: Boolean, reflect: true})\n required = false;\n\n @property({reflect: true})\n name: string | undefined = undefined;\n\n @property({type: Array, attribute: false})\n set selectedIndexes(val: number[]) {\n const newIndexes: number[] = [];\n\n val.forEach((v) => {\n if (typeof this._options[v] !== 'undefined') {\n if (!newIndexes.includes(v)) {\n this._options[v].selected = true;\n newIndexes.push(v);\n }\n }\n });\n\n this._selectedIndexes = newIndexes;\n }\n get selectedIndexes(): number[] {\n return this._selectedIndexes;\n }\n\n @property({type: Array})\n set value(val: string[] | string) {\n const sanitizedVal = Array.isArray(val)\n ? val.map((v) => String(v))\n : [String(val)];\n this._values = [];\n\n this._selectedIndexes.forEach((i) => {\n this._options[i].selected = false;\n });\n\n this._selectedIndexes = [];\n\n sanitizedVal.forEach((v) => {\n if (typeof this._valueOptionIndexMap[v] === 'number') {\n this._selectedIndexes.push(this._valueOptionIndexMap[v]);\n this._options[this._valueOptionIndexMap[v]].selected = true;\n this._values.push(v);\n }\n });\n\n if (this._selectedIndexes.length > 0) {\n this._requestedValueToSetLater = [];\n } else {\n this._requestedValueToSetLater = Array.isArray(val) ? val : [val];\n }\n\n this._setFormValue();\n this._manageRequired();\n }\n get value(): string[] {\n return this._values;\n }\n\n get form() {\n return this._internals.form;\n }\n\n /** @internal */\n get type() {\n return 'select-multiple';\n }\n\n get validity(): ValidityState {\n return this._internals.validity;\n }\n\n get validationMessage(): string {\n return this._internals.validationMessage;\n }\n\n get willValidate() {\n return this._internals.willValidate;\n }\n\n checkValidity(): boolean {\n return this._internals.checkValidity();\n }\n\n reportValidity(): boolean {\n return this._internals.reportValidity();\n }\n\n private _internals: ElementInternals;\n\n constructor() {\n super();\n /** @internal */\n this._multiple = true;\n this._internals = this.attachInternals();\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this.updateComplete.then(() => {\n this._setDefaultValue();\n this._manageRequired();\n });\n }\n\n /** @internal */\n formResetCallback(): void {\n this.updateComplete.then(() => {\n this.value = this.defaultValue;\n });\n }\n\n /** @internal */\n formStateRestoreCallback(\n state: FormData,\n _mode: 'restore' | 'autocomplete'\n ): void {\n const entries = Array.from(state.entries()).map((e) => String(e[1]));\n\n this.updateComplete.then(() => {\n this.value = entries;\n });\n }\n\n @query('.face')\n private _faceElement!: HTMLDivElement;\n\n private _setDefaultValue() {\n if (Array.isArray(this.defaultValue) && this.defaultValue.length > 0) {\n const val = this.defaultValue.map((v) => String(v));\n this.value = val;\n }\n }\n\n protected override _manageRequired() {\n const {value} = this;\n if (value.length === 0 && this.required) {\n this._internals.setValidity(\n {\n valueMissing: true,\n },\n 'Please select an item in the list.',\n this._faceElement\n );\n } else {\n this._internals.setValidity({});\n }\n }\n\n private _setFormValue() {\n const fd = new FormData();\n\n this._values.forEach((v) => {\n fd.append(this.name ?? '', v);\n });\n\n this._internals.setFormValue(fd);\n }\n\n private _requestedValueToSetLater: string[] = [];\n\n protected override async _createAndSelectSuggestedOption() {\n super._createAndSelectSuggestedOption();\n const nextIndex = this._createSuggestedOption();\n\n await this.updateComplete;\n\n this.selectedIndexes = [...this.selectedIndexes, nextIndex];\n this._dispatchChangeEvent();\n const opCreateEvent: VscMultiSelectCreateOptionEvent = new CustomEvent(\n 'vsc-multi-select-create-option',\n {detail: {value: this._options[nextIndex]?.value ?? ''}}\n );\n this.dispatchEvent(opCreateEvent);\n this._toggleDropdown(false);\n this._isPlaceholderOptionActive = false;\n }\n\n protected override _onSlotChange(): void {\n super._onSlotChange();\n\n if (this._requestedValueToSetLater.length > 0) {\n this.options.forEach((o, i) => {\n if (this._requestedValueToSetLater.includes(o.value)) {\n this._selectedIndexes.push(i);\n this._values.push(o.value);\n this._options[i].selected = true;\n this._requestedValueToSetLater =\n this._requestedValueToSetLater.filter((v) => v !== o.value);\n }\n });\n }\n }\n\n protected override _onOptionClick = (ev: MouseEvent) => {\n const composedPath = ev.composedPath();\n const optEl = composedPath.find((et) => {\n if ('matches' in et) {\n return (et as HTMLElement).matches('li.option');\n }\n\n return false;\n });\n\n if (!optEl) {\n return;\n }\n\n const isPlaceholderOption = (optEl as HTMLElement).classList.contains(\n 'placeholder'\n );\n\n if (isPlaceholderOption) {\n this._createAndSelectSuggestedOption();\n return;\n }\n\n const index = Number((optEl as HTMLElement).dataset.index);\n\n if (this._options[index]) {\n if (this._options[index].disabled) {\n return;\n }\n\n this._options[index].selected = !this._options[index].selected;\n }\n\n this._selectedIndexes = [];\n this._values = [];\n\n this._options.forEach((op) => {\n if (op.selected) {\n this._selectedIndexes.push(op.index);\n this._values.push(op.value);\n }\n });\n\n this._setFormValue();\n this._manageRequired();\n this._dispatchChangeEvent();\n };\n\n private _onMultiAcceptClick(): void {\n this._toggleDropdown(false);\n }\n\n private _onMultiDeselectAllClick(): void {\n this._selectedIndexes = [];\n this._values = [];\n this._options = this._options.map((op) => ({...op, selected: false}));\n this._manageRequired();\n this._dispatchChangeEvent();\n }\n\n private _onMultiSelectAllClick(): void {\n this._selectedIndexes = [];\n this._values = [];\n this._options = this._options.map((op) => ({...op, selected: true}));\n this._options.forEach((op, index) => {\n this._selectedIndexes.push(index);\n this._values.push(op.value);\n this._dispatchChangeEvent();\n });\n\n this._setFormValue();\n this._manageRequired();\n }\n\n private _renderLabel() {\n switch (this._selectedIndexes.length) {\n case 0:\n return html`<span class=\"select-face-badge no-item\"\n >No items selected</span\n >`;\n case 1:\n return html`<span class=\"select-face-badge\">1 item selected</span>`;\n default:\n return html`<span class=\"select-face-badge\"\n >${this._selectedIndexes.length} items selected</span\n >`;\n }\n }\n\n protected override _renderSelectFace(): TemplateResult {\n return html`\n <div\n class=\"select-face face multiselect\"\n @click=${this._onFaceClick}\n tabindex=${this.tabIndex > -1 ? 0 : -1}\n >\n ${this._renderLabel()} ${chevronDownIcon}\n </div>\n `;\n }\n\n protected override _renderDropdownControls(): TemplateResult {\n return this._filteredOptions.length > 0\n ? html`\n <div class=\"dropdown-controls\">\n <button\n type=\"button\"\n @click=${this._onMultiSelectAllClick}\n title=\"Select all\"\n class=\"action-icon\"\n id=\"select-all\"\n >\n <vscode-icon name=\"checklist\"></vscode-icon>\n </button>\n <button\n type=\"button\"\n @click=${this._onMultiDeselectAllClick}\n title=\"Deselect all\"\n class=\"action-icon\"\n id=\"select-none\"\n >\n <vscode-icon name=\"clear-all\"></vscode-icon>\n </button>\n <vscode-button\n class=\"button-accept\"\n @click=${this._onMultiAcceptClick}\n >OK</vscode-button\n >\n </div>\n `\n : html`${nothing}`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-multi-select': VscodeMultiSelect;\n }\n\n interface GlobalEventHandlersEventMap {\n 'vsc-multi-select-create-option': VscMultiSelectCreateOptionEvent;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"vscode-multi-select.js","sourceRoot":"","sources":["../../src/vscode-multi-select/vscode-multi-select.ts"],"names":[],"mappings":"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","sourcesContent":["import {html, LitElement, nothing, TemplateResult} from 'lit';\nimport {property, query} from 'lit/decorators.js';\nimport {ifDefined} from 'lit/directives/if-defined.js';\nimport {customElement} from '../includes/VscElement.js';\nimport {chevronDownIcon} from '../includes/vscode-select/template-elements.js';\nimport {VscodeSelectBase} from '../includes/vscode-select/vscode-select-base.js';\nimport styles from './vscode-multi-select.styles.js';\nimport {AssociatedFormControl} from '../includes/AssociatedFormControl.js';\n\nexport type VscMultiSelectCreateOptionEvent = CustomEvent<{value: string}>;\n\n/**\n * Allows to select multiple items from a list of options.\n *\n * When participating in a form, it supports the `:invalid` pseudo class. Otherwise the error styles\n * can be applied through the `invalid` property.\n *\n * @tag vscode-multi-select\n *\n * @prop {boolean} invalid\n * @attr {boolean} invalid\n * @attr name - Name which is used as a variable name in the data of the form-container.\n *\n * @cssprop [--dropdown-z-index=2]\n * @cssprop [--vscode-badge-background=#616161]\n * @cssprop [--vscode-badge-foreground=#f8f8f8]\n * @cssprop [--vscode-settings-dropdownBorder=#3c3c3c]\n * @cssprop [--vscode-settings-checkboxBackground=#313131]\n * @cssprop [--vscode-settings-dropdownBackground=#313131]\n * @cssprop [--vscode-settings-dropdownForeground=#cccccc]\n * @cssprop [--vscode-settings-dropdownListBorder=#454545]\n * @cssprop [--vscode-focusBorder=#0078d4]\n * @cssprop [--vscode-foreground=#cccccc]\n * @cssprop [--vscode-font-family=sans-serif]\n * @cssprop [--vscode-font-size=13px]\n * @cssprop [--vscode-font-weight=normal]\n * @cssprop [--vscode-inputValidation-errorBackground=#5a1d1d]\n * @cssprop [--vscode-inputValidation-errorBorder=#be1100]\n * @cssprop [--vscode-list-activeSelectionBackground=#04395e]\n * @cssprop [--vscode-list-activeSelectionForeground=#ffffff]\n * @cssprop [--vscode-list-focusOutline=#0078d4]\n * @cssprop [--vscode-list-focusHighlightForeground=#2aaaff]\n * @cssprop [--vscode-list-highlightForeground=#2aaaff]\n * @cssprop [--vscode-list-hoverBackground=#2a2d2e]\n * @cssprop [--vscode-list-hoverForeground=#ffffff]\n */\n@customElement('vscode-multi-select')\nexport class VscodeMultiSelect\n extends VscodeSelectBase\n implements AssociatedFormControl\n{\n static override styles = styles;\n\n /** @internal */\n static override shadowRootOptions: ShadowRootInit = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n static formAssociated = true;\n\n @property({type: Array, attribute: 'default-value'})\n defaultValue: string[] = [];\n\n @property({type: Boolean, reflect: true})\n required = false;\n\n @property({reflect: true})\n name: string | undefined = undefined;\n\n @property({type: Array, attribute: false})\n set selectedIndexes(val: number[]) {\n this._opts.selectedIndexes = val;\n }\n get selectedIndexes(): number[] {\n return this._opts.selectedIndexes;\n }\n\n @property({type: Array})\n set value(val: string[]) {\n this._opts.multiSelectValue = val;\n\n if (this._opts.selectedIndexes.length > 0) {\n this._requestedValueToSetLater = [];\n } else {\n this._requestedValueToSetLater = Array.isArray(val) ? val : [val];\n }\n\n this._setFormValue();\n this._manageRequired();\n }\n get value(): string[] {\n return this._opts.multiSelectValue;\n }\n\n get form() {\n return this._internals.form;\n }\n\n /** @internal */\n get type() {\n return 'select-multiple';\n }\n\n get validity(): ValidityState {\n return this._internals.validity;\n }\n\n get validationMessage(): string {\n return this._internals.validationMessage;\n }\n\n get willValidate() {\n return this._internals.willValidate;\n }\n\n checkValidity(): boolean {\n return this._internals.checkValidity();\n }\n\n reportValidity(): boolean {\n return this._internals.reportValidity();\n }\n\n selectAll() {\n this._opts.selectAll();\n }\n\n selectNone() {\n this._opts.selectNone();\n }\n\n private _internals: ElementInternals;\n\n constructor() {\n super();\n this._opts.multiSelect = true;\n this._internals = this.attachInternals();\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this.updateComplete.then(() => {\n this._setDefaultValue();\n this._manageRequired();\n });\n }\n\n /** @internal */\n formResetCallback(): void {\n this.updateComplete.then(() => {\n this.value = this.defaultValue;\n });\n }\n\n /** @internal */\n formStateRestoreCallback(\n state: FormData,\n _mode: 'restore' | 'autocomplete'\n ): void {\n const entries = Array.from(state.entries()).map((e) => String(e[1]));\n\n this.updateComplete.then(() => {\n this.value = entries;\n });\n }\n\n @query('.face')\n private _faceElement!: HTMLDivElement;\n\n private _setDefaultValue() {\n if (Array.isArray(this.defaultValue) && this.defaultValue.length > 0) {\n const val = this.defaultValue.map((v) => String(v));\n this.value = val;\n }\n }\n\n protected override _dispatchChangeEvent(): void {\n /** @deprecated */\n this.dispatchEvent(\n new CustomEvent('vsc-change', {\n detail: {\n selectedIndexes: this._opts.selectedIndexes,\n value: this._opts.multiSelectValue,\n },\n })\n );\n\n super._dispatchChangeEvent();\n }\n\n protected override _onFaceClick(): void {\n super._onFaceClick();\n this._opts.activeIndex = 0;\n }\n\n protected override _toggleComboboxDropdown(): void {\n super._toggleComboboxDropdown();\n this._opts.activeIndex = -1;\n }\n\n protected override _manageRequired() {\n const {value} = this;\n if (value.length === 0 && this.required) {\n this._internals.setValidity(\n {\n valueMissing: true,\n },\n 'Please select an item in the list.',\n this._faceElement\n );\n } else {\n this._internals.setValidity({});\n }\n }\n\n private _setFormValue() {\n const fd = new FormData();\n\n this._values.forEach((v) => {\n fd.append(this.name ?? '', v);\n });\n\n this._internals.setFormValue(fd);\n }\n\n private _requestedValueToSetLater: string[] = [];\n\n protected override async _createAndSelectSuggestedOption() {\n super._createAndSelectSuggestedOption();\n const nextIndex = this._createSuggestedOption();\n\n await this.updateComplete;\n\n this.selectedIndexes = [...this.selectedIndexes, nextIndex];\n this._dispatchChangeEvent();\n const opCreateEvent: VscMultiSelectCreateOptionEvent = new CustomEvent(\n 'vsc-multi-select-create-option',\n {detail: {value: this._options[nextIndex]?.value ?? ''}}\n );\n this.dispatchEvent(opCreateEvent);\n this.open = false;\n this._isPlaceholderOptionActive = false;\n }\n\n //#region event handlers\n protected override _onSlotChange(): void {\n super._onSlotChange();\n\n if (this._requestedValueToSetLater.length > 0) {\n this._opts.expandMultiSelection(this._requestedValueToSetLater);\n this._requestedValueToSetLater = this._requestedValueToSetLater.filter(\n (v) => this._opts.findOptionIndex(v) === -1\n );\n }\n }\n\n protected override _onOptionClick = (ev: MouseEvent) => {\n const composedPath = ev.composedPath();\n const optEl = composedPath.find((et) => {\n if ('matches' in et) {\n return (et as HTMLElement).matches('li.option');\n }\n\n return false;\n });\n\n if (!optEl) {\n return;\n }\n\n const isPlaceholderOption = (optEl as HTMLElement).classList.contains(\n 'placeholder'\n );\n\n if (isPlaceholderOption) {\n this._createAndSelectSuggestedOption();\n return;\n }\n\n const index = Number((optEl as HTMLElement).dataset.index);\n\n this._opts.toggleOptionSelected(index);\n\n this._setFormValue();\n this._manageRequired();\n this._dispatchChangeEvent();\n };\n\n protected override _onEnterKeyDown(ev: KeyboardEvent): void {\n super._onEnterKeyDown(ev);\n\n if (!this.open) {\n this._opts.filterPattern = '';\n this.open = true;\n } else {\n if (this._isPlaceholderOptionActive) {\n this._createAndSelectSuggestedOption();\n } else {\n this._opts.toggleActiveMultiselectOption();\n this._setFormValue();\n this._manageRequired();\n this._dispatchChangeEvent();\n }\n }\n }\n\n private _onMultiAcceptClick(): void {\n this.open = false;\n }\n\n private _onMultiDeselectAllClick(): void {\n this._opts.selectedIndexes = [];\n this._values = [];\n this._options = this._options.map((op) => ({...op, selected: false}));\n this._manageRequired();\n this._dispatchChangeEvent();\n }\n\n private _onMultiSelectAllClick(): void {\n this._opts.selectedIndexes = [];\n this._values = [];\n this._options = this._options.map((op) => ({...op, selected: true}));\n this._options.forEach((op, index) => {\n this._selectedIndexes.push(index);\n this._values.push(op.value);\n this._dispatchChangeEvent();\n });\n\n this._setFormValue();\n this._manageRequired();\n }\n //#endregion\n\n //#region render functions\n private _renderLabel() {\n switch (this._opts.selectedIndexes.length) {\n case 0:\n return html`<span class=\"select-face-badge no-item\">0 Selected</span>`;\n default:\n return html`<span class=\"select-face-badge\"\n >${this._opts.selectedIndexes.length} Selected</span\n >`;\n }\n }\n\n protected override _renderComboboxFace(): TemplateResult {\n let inputVal = '';\n\n if (this._isBeingFiltered) {\n inputVal = this._opts.filterPattern;\n } else {\n const op = this._opts.getSelectedOption();\n inputVal = op?.label ?? '';\n }\n\n const activeDescendant =\n this._opts.activeIndex > -1 ? `op-${this._opts.activeIndex}` : '';\n const expanded = this.open ? 'true' : 'false';\n\n return html`\n <div class=\"combobox-face face\">\n ${this._opts.multiSelect ? this._renderLabel() : nothing}\n <input\n aria-activedescendant=${activeDescendant}\n aria-autocomplete=\"list\"\n aria-controls=\"select-listbox\"\n aria-expanded=${expanded}\n aria-haspopup=\"listbox\"\n aria-label=${ifDefined(this.label)}\n class=\"combobox-input\"\n role=\"combobox\"\n spellcheck=\"false\"\n type=\"text\"\n autocomplete=\"off\"\n .value=${inputVal}\n @focus=${this._onComboboxInputFocus}\n @blur=${this._onComboboxInputBlur}\n @input=${this._onComboboxInputInput}\n @click=${this._onComboboxInputClick}\n @keydown=${this._onComboboxInputSpaceKeyDown}\n >\n <button\n aria-label=\"Open the list of options\"\n class=\"combobox-button\"\n type=\"button\"\n @click=${this._onComboboxButtonClick}\n @keydown=${this._onComboboxButtonKeyDown}\n tabindex=\"-1\"\n >\n ${chevronDownIcon}\n </button>\n </div>\n `;\n }\n\n protected override _renderSelectFace(): TemplateResult {\n const activeDescendant =\n this._opts.activeIndex > -1 ? `op-${this._opts.activeIndex}` : '';\n const expanded = this.open ? 'true' : 'false';\n\n return html`\n <div\n aria-activedescendant=${ifDefined(\n this._opts.multiSelect ? undefined : activeDescendant\n )}\n aria-controls=\"select-listbox\"\n aria-expanded=${ifDefined(\n this._opts.multiSelect ? undefined : expanded\n )}\n aria-haspopup=\"listbox\"\n aria-label=${ifDefined(this.label ?? undefined)}\n class=\"select-face face multiselect\"\n @click=${this._onFaceClick}\n .tabIndex=${this.disabled ? -1 : 0}\n >\n ${this._renderLabel()} ${chevronDownIcon}\n </div>\n `;\n }\n\n protected override _renderDropdownControls(): TemplateResult {\n return this._filteredOptions.length > 0\n ? html`\n <div class=\"dropdown-controls\">\n <button\n type=\"button\"\n @click=${this._onMultiSelectAllClick}\n title=\"Select all\"\n class=\"action-icon\"\n id=\"select-all\"\n >\n <vscode-icon name=\"checklist\"></vscode-icon>\n </button>\n <button\n type=\"button\"\n @click=${this._onMultiDeselectAllClick}\n title=\"Deselect all\"\n class=\"action-icon\"\n id=\"select-none\"\n >\n <vscode-icon name=\"clear-all\"></vscode-icon>\n </button>\n <vscode-button\n class=\"button-accept\"\n @click=${this._onMultiAcceptClick}\n >OK</vscode-button\n >\n </div>\n `\n : html`${nothing}`;\n }\n\n override render(): TemplateResult {\n return html`\n <div class=\"multi-select\">\n <slot class=\"main-slot\" @slotchange=${this._onSlotChange}></slot>\n ${this.combobox ? this._renderComboboxFace() : this._renderSelectFace()}\n ${this._renderDropdown()}\n </div>\n `;\n }\n //#endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'vscode-multi-select': VscodeMultiSelect;\n }\n\n interface GlobalEventHandlersEventMap {\n 'vsc-multi-select-create-option': VscMultiSelectCreateOptionEvent;\n }\n}\n"]}
|
|
@@ -57,8 +57,6 @@ export declare class VscodeSingleSelect extends VscodeSelectBase implements Asso
|
|
|
57
57
|
/** @internal */
|
|
58
58
|
static formAssociated: boolean;
|
|
59
59
|
defaultValue: string;
|
|
60
|
-
/** @internal */
|
|
61
|
-
role: string;
|
|
62
60
|
name: string | undefined;
|
|
63
61
|
set selectedIndex(val: number);
|
|
64
62
|
get selectedIndex(): number;
|
|
@@ -88,13 +86,15 @@ export declare class VscodeSingleSelect extends VscodeSelectBase implements Asso
|
|
|
88
86
|
*/
|
|
89
87
|
private _requestedValueToSetLater;
|
|
90
88
|
protected _createAndSelectSuggestedOption(): Promise<void>;
|
|
89
|
+
protected _dispatchChangeEvent(): void;
|
|
90
|
+
protected _setStateFromSlottedElements(): void;
|
|
91
91
|
protected _onSlotChange(): void;
|
|
92
|
-
protected _onArrowUpKeyDown(): void;
|
|
93
|
-
protected _onArrowDownKeyDown(): void;
|
|
94
92
|
protected _onEnterKeyDown(ev: KeyboardEvent): void;
|
|
95
93
|
protected _onOptionClick(ev: MouseEvent): void;
|
|
96
94
|
protected _manageRequired(): void;
|
|
97
95
|
protected _renderSelectFace(): TemplateResult;
|
|
96
|
+
protected _renderComboboxFace(): TemplateResult;
|
|
97
|
+
render(): TemplateResult;
|
|
98
98
|
}
|
|
99
99
|
declare global {
|
|
100
100
|
interface HTMLElementTagNameMap {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vscode-single-select.d.ts","sourceRoot":"","sources":["../../src/vscode-single-select/vscode-single-select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,cAAc,EAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"vscode-single-select.d.ts","sourceRoot":"","sources":["../../src/vscode-single-select/vscode-single-select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,cAAc,EAAC,MAAM,KAAK,CAAC;AAKrD,OAAO,EAAC,gBAAgB,EAAC,MAAM,iDAAiD,CAAC;AACjF,OAAO,EAAC,qBAAqB,EAAC,MAAM,sCAAsC,CAAC;AAG3E,MAAM,MAAM,gCAAgC,GAAG,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,qBACa,kBACX,SAAQ,gBACR,YAAW,qBAAqB;IAEhC,OAAgB,MAAM,4BAAU;IAEhC,gBAAgB;IAChB,OAAgB,iBAAiB,EAAE,cAAc,CAG/C;IAEF,gBAAgB;IAChB,MAAM,CAAC,cAAc,UAAQ;IAG7B,YAAY,SAAM;IAGlB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAa;IAErC,IACI,aAAa,CAAC,GAAG,EAAE,MAAM,EAe5B;IACD,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IACI,KAAK,CAAC,GAAG,EAAE,MAAM,EAWpB;IACD,IAAI,KAAK,IAAI,MAAM,CAElB;IAGD,QAAQ,UAAS;IAEjB,IAAI,QAAQ,IAAI,aAAa,CAE5B;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,IAAI,YAAY,YAEf;IAED,aAAa,IAAI,OAAO;IAIxB,cAAc,IAAI,OAAO;IAKzB,OAAO,CAAC,KAAK,CAAkB;IAE/B,OAAO,CAAC,UAAU,CAAmB;IAErC,OAAO,CAAC,gBAAgB;;IAqBf,iBAAiB,IAAI,IAAI;IAQlC,gBAAgB;IAChB,iBAAiB,IAAI,IAAI;IAIzB,gBAAgB;IAChB,wBAAwB,CACtB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,SAAS,GAAG,cAAc,GAChC,IAAI;IAMP,gBAAgB;IAChB,IAAI,IAAI,IAAI,YAAY,CAEvB;IAED,IAAI,IAAI,IAAI,eAAe,GAAG,IAAI,CAEjC;IAED;;;OAGG;IACH,OAAO,CAAC,yBAAyB,CAAM;cAEd,+BAA+B;cAgBrC,oBAAoB,IAAI,IAAI;cAc5B,4BAA4B,IAAI,IAAI;cASpC,aAAa,IAAI,IAAI;cAwBrB,eAAe,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI;cAoCxC,cAAc,CAAC,EAAE,EAAE,UAAU;cAkC7B,eAAe;cAcf,iBAAiB,IAAI,cAAc;cAuBnC,mBAAmB,IAAI,cAAc;IAiD/C,MAAM,IAAI,cAAc;CAUlC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,sBAAsB,EAAE,kBAAkB,CAAC;KAC5C;IAED,UAAU,2BAA2B;QACnC,iCAAiC,EAAE,gCAAgC,CAAC;KACrE;CACF"}
|