Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
bf21f30
Refactor _dispatchChangeEvent
bendera Apr 23, 2025
6aa5c06
Refactor _onFaceClick()
bendera Apr 23, 2025
a7a781a
Refactor _toggleComboboxDropdown()
bendera Apr 23, 2025
9a2c56e
Don't remove the dropdown from the DOM
bendera Apr 24, 2025
e0863fb
Refactor the option list scrolling
bendera Apr 24, 2025
ebfe608
Refactor
bendera Apr 25, 2025
2f44b5b
Add the ability to connect to selects
bendera Apr 26, 2025
38911f6
Update tests
bendera Apr 26, 2025
db0d6c6
Add a11y improvements
bendera Apr 26, 2025
c93e7ac
Accessible single select in normal mode
bendera Apr 26, 2025
1588380
Fix the autoselect functionality
bendera Apr 27, 2025
ca5ac70
wip
bendera Apr 27, 2025
720e6e3
Fix select next option with the arrow down key
bendera May 1, 2025
66ac2e9
Toggle options with Enter key
bendera May 2, 2025
07dcbae
wip
bendera May 2, 2025
541155f
wip 0520
bendera May 20, 2025
e2fb974
wip
bendera May 23, 2025
fa1b21a
wip
bendera May 25, 2025
2217cd0
Fix duplicated options
bendera May 26, 2025
4e5f94a
Fix runtime error
bendera May 26, 2025
26ab351
wip
bendera May 30, 2025
67c60b8
Refactor dropdown visibility logic
bendera May 30, 2025
1613077
Fix active element highlight in default open state
bendera May 30, 2025
89652c5
Prevent error when invalid index is selected
bendera May 30, 2025
5cd5a38
wip
bendera May 30, 2025
204daf1
Handle arrow down key press
bendera May 31, 2025
ce27aea
Re-arrange code blocks
bendera May 31, 2025
ca876d1
Fix tests
bendera May 31, 2025
281f068
Re-organize the demo html files
bendera Jun 1, 2025
08e2e47
Fix test
bendera Jun 1, 2025
9689b59
Fix highlight last option
bendera Jun 1, 2025
9312c7c
Fix test
bendera Jun 1, 2025
6c15056
Fix tests
bendera Jun 9, 2025
4631ac3
Fix highlighting active option when dropdown open
bendera Jun 9, 2025
4ba15c6
Fix tests
bendera Jun 9, 2025
dd40dca
progress
bendera Jun 11, 2025
0f11106
Fix eslint issues
bendera Jun 12, 2025
207085d
Refactor combobox mode
bendera Jun 12, 2025
e5bf482
Fix checkbox states
bendera Jun 12, 2025
10fee32
A11y optimization
bendera Jun 12, 2025
0baf0b4
Organize imports
bendera Jun 12, 2025
bdb3152
Fix tests
bendera Jun 12, 2025
878bf86
Fix list state reset logic
bendera Jun 13, 2025
6ccdeb0
Simplify option list filtering logic
bendera Jun 13, 2025
81f9058
Rename filtered index
bendera Jun 13, 2025
7de4d0e
Improve type definitions
bendera Jun 13, 2025
b376f9a
Refactor
bendera Jun 13, 2025
576a383
Update verify.yml
bendera Jun 12, 2025
5ab4408
Update verify.yml
bendera Jun 12, 2025
f8f5f0a
Update verify.yml
bendera Jun 12, 2025
cd697d0
Add a11y test pages
bendera Jun 15, 2025
23fbbae
Refactor the arrow up key press handler
bendera Jun 15, 2025
163eee6
The arrow keys should not change the value
bendera Jun 15, 2025
4df2ec3
Fine-tuning ARIA attributes
bendera Jun 15, 2025
ac75df4
Revert playwright install in verify action
bendera Jun 16, 2025
98fd480
Restructure the render functions
bendera Jun 16, 2025
45aa8cd
More compact badge in the multi select
bendera Jun 16, 2025
13fdafd
Refactor
bendera Jun 16, 2025
402fdd0
Implement `selectAll()` and `selectNone()`
bendera Jun 18, 2025
8267864
Fix test
bendera Jun 18, 2025
8ff18bc
Fix runtime error
bendera Jun 21, 2025
c21d2ac
Fix disappearing highlight
bendera Jun 21, 2025
edcf2da
Fix create option with Enter key press
bendera Jun 21, 2025
bd27dad
Fix change event dispatching
bendera Jun 21, 2025
253ec5c
Add nicer checkboxes
bendera Jun 21, 2025
6a8ff18
Minor fixes
bendera Jun 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions dev/vscode-multi-select/a11y-combobox.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>VSCode Elements</title>
<link
rel="stylesheet"
href="/node_modules/@vscode/codicons/dist/codicon.css"
id="vscode-codicon-stylesheet"
>
<script
type="module"
src="/node_modules/@vscode-elements/webview-playground/dist/index.js"
></script>
<script type="module" src="/dist/main.js"></script>
<script>
const logEvents = (selector, eventType) => {
document.querySelector(selector).addEventListener(eventType, (ev) => {
console.log(ev);
});
};
</script>
</head>

<body>
<main>
<vscode-demo>
<vscode-multi-select name="fruit" id="select" label="Fruits" combobox>
<vscode-option value="banana">Banana</vscode-option>
<vscode-option value="cherry">Cherry</vscode-option>
<vscode-option value="apple">Apple</vscode-option>
<vscode-option value="strawberry">Strawberry</vscode-option>
<vscode-option value="lemon">Lemon</vscode-option>
<vscode-option value="orange">Orange</vscode-option>
</vscode-multi-select>
</vscode-demo>
</main>
</body>
</html>
40 changes: 40 additions & 0 deletions dev/vscode-multi-select/a11y-select.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>VSCode Elements</title>
<link
rel="stylesheet"
href="/node_modules/@vscode/codicons/dist/codicon.css"
id="vscode-codicon-stylesheet"
>
<script
type="module"
src="/node_modules/@vscode-elements/webview-playground/dist/index.js"
></script>
<script type="module" src="/dist/main.js"></script>
<script>
const logEvents = (selector, eventType) => {
document.querySelector(selector).addEventListener(eventType, (ev) => {
console.log(ev);
});
};
</script>
</head>

<body>
<main>
<vscode-demo>
<vscode-multi-select name="fruit" id="select" label="Fruits">
<vscode-option value="banana">Banana</vscode-option>
<vscode-option value="cherry">Cherry</vscode-option>
<vscode-option value="apple">Apple</vscode-option>
<vscode-option value="strawberry">Strawberry</vscode-option>
<vscode-option value="lemon">Lemon</vscode-option>
<vscode-option value="orange">Orange</vscode-option>
</vscode-multi-select>
</vscode-demo>
</main>
</body>
</html>
46 changes: 46 additions & 0 deletions dev/vscode-multi-select/autofocus-combobox.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>multi combo</title>
<link
rel="stylesheet"
href="/node_modules/@vscode/codicons/dist/codicon.css"
id="vscode-codicon-stylesheet"
>
<script
type="module"
src="/node_modules/@vscode-elements/webview-playground/dist/index.js"
></script>
<script type="module" src="/dist/main.js"></script>
<script>
const logEvents = (selector, eventType) => {
document.querySelector(selector).addEventListener(eventType, (ev) => {
console.log(ev);
});
};
</script>
</head>

<body>
<main>
<vscode-demo>
<vscode-multi-select label="Single Select example" autofocus combobox>
<vscode-option>Lorem</vscode-option>
<vscode-option>Ipsum</vscode-option>
<vscode-option>Dolor</vscode-option>
</vscode-multi-select>
<button type="button">focus</button>
</vscode-demo>
<script type="module">
const sl = document.querySelector('vscode-single-select');
const bt = document.querySelector('button');

bt.addEventListener('click', () => {
sl.focus();
});
</script>
</main>
</body>
</html>
51 changes: 51 additions & 0 deletions dev/vscode-multi-select/autofocus-select.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>multi select</title>
<link
rel="stylesheet"
href="/node_modules/@vscode/codicons/dist/codicon.css"
id="vscode-codicon-stylesheet"
>
<script
type="module"
src="/node_modules/@vscode-elements/webview-playground/dist/index.js"
></script>
<script type="module" src="/dist/main.js"></script>
<script>
const logEvents = (selector, eventType) => {
document.querySelector(selector).addEventListener(eventType, (ev) => {
console.log(ev);
});
};
</script>
<style>
vscode-single-select:focus {
--vscode-settings-dropdownBackground: red;
}
</style>
</head>

<body>
<main>
<vscode-demo>
<vscode-multi-select label="Single Select example" autofocus>
<vscode-option>Lorem</vscode-option>
<vscode-option>Ipsum</vscode-option>
<vscode-option>Dolor</vscode-option>
</vscode-multi-select>
<button type="button">focus</button>
</vscode-demo>
<script type="module">
const sl = document.querySelector('vscode-multi-select');
const bt = document.querySelector('button');

bt.addEventListener('click', () => {
sl.focus();
});
</script>
</main>
</body>
</html>
10 changes: 2 additions & 8 deletions dev/vscode-multi-select/combobox-suggestion-mode.html
Original file line number Diff line number Diff line change
Expand Up @@ -224,14 +224,8 @@
<vscode-option>Zimbabwe</vscode-option>
</vscode-multi-select>
<script type="module">
const sl = document.querySelector('vscode-multi-select');
sl.addEventListener('change', () => {
console.log(sl.value);
});

sl.addEventListener('vsc-multi-select-create-option', (ev) => {
console.log(ev);
});
logEvents('vscode-multi-select', 'change');
logEvents('vscode-multi-select', 'vsc-multi-select-create-option');
</script>
</vscode-demo>
</main>
Expand Down
40 changes: 40 additions & 0 deletions dev/vscode-single-select/combobox-mode/a11y.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>VSCode Elements</title>
<link
rel="stylesheet"
href="/node_modules/@vscode/codicons/dist/codicon.css"
id="vscode-codicon-stylesheet"
>
<script
type="module"
src="/node_modules/@vscode-elements/webview-playground/dist/index.js"
></script>
<script type="module" src="/dist/main.js"></script>
<script>
const logEvents = (selector, eventType) => {
document.querySelector(selector).addEventListener(eventType, (ev) => {
console.log(ev);
});
};
</script>
</head>

<body>
<main>
<vscode-demo>
<vscode-single-select name="fruit" id="select" label="Fruits" combobox>
<vscode-option value="banana">Banana</vscode-option>
<vscode-option value="cherry">Cherry</vscode-option>
<vscode-option value="apple">Apple</vscode-option>
<vscode-option value="strawberry">Strawberry</vscode-option>
<vscode-option value="lemon">Lemon</vscode-option>
<vscode-option value="orange">Orange</vscode-option>
</vscode-single-select>
</vscode-demo>
</main>
</body>
</html>
46 changes: 46 additions & 0 deletions dev/vscode-single-select/combobox-mode/autofocus-combobox.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>single combo</title>
<link
rel="stylesheet"
href="/node_modules/@vscode/codicons/dist/codicon.css"
id="vscode-codicon-stylesheet"
>
<script
type="module"
src="/node_modules/@vscode-elements/webview-playground/dist/index.js"
></script>
<script type="module" src="/dist/main.js"></script>
<script>
const logEvents = (selector, eventType) => {
document.querySelector(selector).addEventListener(eventType, (ev) => {
console.log(ev);
});
};
</script>
</head>

<body>
<main>
<vscode-demo>
<vscode-single-select label="Single Select example" autofocus combobox>
<vscode-option>Lorem</vscode-option>
<vscode-option>Ipsum</vscode-option>
<vscode-option>Dolor</vscode-option>
</vscode-single-select>
<button type="button">focus</button>
</vscode-demo>
<script type="module">
const sl = document.querySelector('vscode-single-select');
const bt = document.querySelector('button');

bt.addEventListener('click', () => {
sl.focus();
});
</script>
</main>
</body>
</html>
40 changes: 40 additions & 0 deletions dev/vscode-single-select/select-mode/a11y.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>VSCode Elements</title>
<link
rel="stylesheet"
href="/node_modules/@vscode/codicons/dist/codicon.css"
id="vscode-codicon-stylesheet"
>
<script
type="module"
src="/node_modules/@vscode-elements/webview-playground/dist/index.js"
></script>
<script type="module" src="/dist/main.js"></script>
<script>
const logEvents = (selector, eventType) => {
document.querySelector(selector).addEventListener(eventType, (ev) => {
console.log(ev);
});
};
</script>
</head>

<body>
<main>
<vscode-demo>
<vscode-single-select name="fruit" id="select" label="Fruits">
<vscode-option value="banana">Banana</vscode-option>
<vscode-option value="cherry">Cherry</vscode-option>
<vscode-option value="apple">Apple</vscode-option>
<vscode-option value="strawberry">Strawberry</vscode-option>
<vscode-option value="lemon">Lemon</vscode-option>
<vscode-option value="orange">Orange</vscode-option>
</vscode-single-select>
</vscode-demo>
</main>
</body>
</html>
51 changes: 51 additions & 0 deletions dev/vscode-single-select/select-mode/autofocus-select.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>single select</title>
<link
rel="stylesheet"
href="/node_modules/@vscode/codicons/dist/codicon.css"
id="vscode-codicon-stylesheet"
>
<script
type="module"
src="/node_modules/@vscode-elements/webview-playground/dist/index.js"
></script>
<script type="module" src="/dist/main.js"></script>
<script>
const logEvents = (selector, eventType) => {
document.querySelector(selector).addEventListener(eventType, (ev) => {
console.log(ev);
});
};
</script>
<style>
vscode-single-select:focus {
--vscode-settings-dropdownBackground: rgba(0, 255, 0, 0.1);
}
</style>
</head>

<body>
<main>
<vscode-demo>
<vscode-single-select label="Single Select example" autofocus>
<vscode-option>Lorem</vscode-option>
<vscode-option>Ipsum</vscode-option>
<vscode-option>Dolor</vscode-option>
</vscode-single-select>
<button type="button">focus</button>
</vscode-demo>
<script type="module">
const sl = document.querySelector('vscode-single-select');
const bt = document.querySelector('button');

bt.addEventListener('click', () => {
sl.focus();
});
</script>
</main>
</body>
</html>
Loading