Skip to content

Commit 5f6be35

Browse files
committed
v11.1.1
1 parent 403557b commit 5f6be35

File tree

4 files changed

+82
-209
lines changed

4 files changed

+82
-209
lines changed

changelog.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@
22

33
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
44

5+
#### [v11.1.1](https://github.com/janosh/svelte-multiselect/compare/v11.1.0...v11.1.1)
6+
7+
> 20 May 2025
8+
9+
- more playwright tests for active+inactive portal [`66ebd8d`](https://github.com/janosh/svelte-multiselect/commit/66ebd8dedc799180daba0af734f9cbebd1b7c723)
10+
- pnpm remove svelte-multiselect [`bc6ee6c`](https://github.com/janosh/svelte-multiselect/commit/bc6ee6c5a75d0c7c223159ee72da568e5eb6befd)
11+
- replace `browser` from @app/env import with `typeof window` check in portal() action to support non-sveltekit apps [`2a8f116`](https://github.com/janosh/svelte-multiselect/commit/2a8f116b89b9f42e075f57dc7ecb2b63a4065723)
12+
- remove unused link-check-config.json [`c4f26ef`](https://github.com/janosh/svelte-multiselect/commit/c4f26efda66e3a153cf2a5ec0fcd2de29d19f4bc)
13+
514
#### [v11.1.0](https://github.com/janosh/svelte-multiselect/compare/v11.0.0...v11.1.0)
615

716
> 17 May 2025

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"homepage": "https://janosh.github.io/svelte-multiselect",
66
"repository": "https://github.com/janosh/svelte-multiselect",
77
"license": "MIT",
8-
"version": "11.1.0",
8+
"version": "11.1.1",
99
"type": "module",
1010
"svelte": "./dist/index.js",
1111
"bugs": "https://github.com/janosh/svelte-multiselect/issues",

src/routes/(demos)/modal/+page.svelte

Lines changed: 21 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -1,174 +1,88 @@
11
<script lang="ts">
22
import MultiSelect from '$lib'
33
import { get_label } from '$lib/utils'
4-
import { colors, foods, languages, octicons } from '$site/options'
4+
import { languages, octicons } from '$site/options'
55
6-
let show_modal_1 = $state(false)
7-
let show_modal_2 = $state(false)
8-
9-
const foods_options = foods
10-
const colors_options = colors
11-
12-
let selected_foods = $state<string[]>([])
13-
let selected_colors = $state<string[]>([])
6+
let show_modal = $state(false)
147
let selected_languages = $state<string[]>([])
158
let selected_octicons = $state<string[]>([])
169
1710
function handle_escape(event: KeyboardEvent): void {
18-
if (event.key === `Escape`) {
19-
show_modal_1 = false
20-
show_modal_2 = false
21-
}
11+
if (event.key === `Escape`) show_modal = false
2212
}
2313
</script>
2414

2515
<svelte:window onkeydown={handle_escape} />
2616

2717
<h2>MultiSelect in Modal Demo</h2>
2818

29-
<div class="button-bar">
30-
<button onclick={() => (show_modal_1 = true)}>Open Modal 1 (Vertical Selects)</button>
31-
<button onclick={() => (show_modal_2 = true)}>Open Modal 2 (Horizontal Selects)</button>
32-
</div>
19+
<button onclick={() => (show_modal = true)} style="padding: 3pt 6pt; margin: 1em auto;">
20+
Open Modal
21+
</button>
3322

34-
{#if show_modal_1}
23+
{#if show_modal}
3524
<div
3625
class="modal-backdrop"
3726
onclick={(event) => {
38-
if (event.target === event.currentTarget) show_modal_1 = false
27+
if (event.target === event.currentTarget) show_modal = false
3928
}}
4029
onkeydown={(event) => {
41-
if (event.key === `Enter` || event.key === ` `) show_modal_1 = false
30+
if (event.key === `Enter` || event.key === ` `) show_modal = false
4231
}}
4332
role="button"
4433
tabindex="0"
4534
>
4635
<div
47-
class="modal-content modal-1"
36+
class="modal-content modal"
4837
onkeydown={(event) => {
4938
if (event.key !== `Escape`) event.stopPropagation()
5039
}}
5140
role="dialog"
5241
aria-modal="true"
53-
aria-labelledby="modal-1-title"
42+
aria-labelledby="modal-title"
5443
tabindex="-1"
5544
>
56-
<h2 id="modal-1-title">Modal 1: Favorite Foods & Colors</h2>
45+
<h2 id="modal-title">Modal: Languages & Octicons</h2>
5746
<MultiSelect
58-
bind:selected={selected_foods}
59-
options={foods_options}
47+
bind:selected={selected_languages}
48+
options={languages}
6049
portal={{ active: true }}
61-
placeholder="Choose foods..."
50+
placeholder="Choose languages..."
51+
style="margin-bottom: 1em;"
6252
/>
6353
<MultiSelect
64-
bind:selected={selected_colors}
65-
options={colors_options}
54+
bind:selected={selected_octicons}
55+
options={octicons}
6656
portal={{ active: true }}
67-
placeholder="Choose colors..."
57+
placeholder="Choose octicons..."
6858
/>
69-
<p>Selected Foods: {selected_foods.map(get_label).join(`, `) || `None`}</p>
70-
<p>Selected Colors: {selected_colors.map(get_label).join(`, `) || `None`}</p>
71-
<button onclick={() => (show_modal_1 = false)}>Close Modal 1</button>
72-
</div>
73-
</div>
74-
{/if}
75-
76-
{#if show_modal_2}
77-
<div
78-
class="modal-backdrop"
79-
onclick={(event) => {
80-
if (event.target === event.currentTarget) show_modal_2 = false
81-
}}
82-
onkeydown={(event) => {
83-
if (event.key === `Enter` || event.key === ` `) show_modal_2 = false
84-
}}
85-
role="button"
86-
tabindex="0"
87-
>
88-
<div
89-
class="modal-content modal-2"
90-
onkeydown={(event) => {
91-
if (event.key !== `Escape`) event.stopPropagation()
92-
}}
93-
role="dialog"
94-
aria-modal="true"
95-
aria-labelledby="modal-2-title"
96-
tabindex="-1"
97-
>
98-
<h2 id="modal-2-title">Modal 2: Languages & Octicons (Horizontal)</h2>
99-
<div class="horizontal-selects">
100-
<MultiSelect
101-
bind:selected={selected_languages}
102-
options={languages}
103-
portal={{ active: true }}
104-
placeholder="Choose languages..."
105-
/>
106-
<MultiSelect
107-
bind:selected={selected_octicons}
108-
options={octicons}
109-
portal={{ active: true }}
110-
placeholder="Choose octicons..."
111-
/>
112-
</div>
11359
<p>Selected Languages: {selected_languages.map(get_label).join(`, `) || `None`}</p>
11460
<p>Selected Octicons: {selected_octicons.map(get_label).join(`, `) || `None`}</p>
115-
<button onclick={() => (show_modal_2 = false)}>Close Modal 2</button>
61+
<button onclick={() => (show_modal = false)}>Close Modal 2</button>
11662
</div>
11763
</div>
11864
{/if}
11965

12066
<style>
121-
.button-bar {
122-
margin-bottom: 1.5em;
123-
display: flex;
124-
gap: 1em;
125-
}
12667
.modal-backdrop {
12768
position: fixed;
12869
top: 0;
12970
left: 0;
13071
width: 100%;
13172
height: 100%;
132-
background-color: rgba(0, 0, 0, 0.7);
73+
background-color: rgba(0, 0, 0, 0.5);
13374
display: flex;
13475
justify-content: center;
13576
align-items: center;
13677
}
137-
13878
.modal-content {
13979
background-color: var(--modal-bg, #2d2d2d);
140-
color: var(--modal-text-color, #f0f0f0);
14180
padding: 10px 20px 20px;
14281
border-radius: 8px;
143-
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
144-
max-width: 600px;
145-
max-height: 80vh;
146-
147-
--sms-bg: #3a3a3a;
148-
--sms-text-color: #e0e0e0;
149-
--sms-border: 1pt solid #555;
150-
--sms-focus-border: 1pt solid #7799ff;
151-
--sms-placeholder-color: #aaa;
152-
--sms-selected-bg: #4a4a5a;
153-
--sms-selected-text-color: #f0f0f0;
154-
--sms-options-bg: #333;
155-
--sms-li-active-bg: #505060;
156-
--sms-li-selected-bg: #404050;
157-
--sms-li-selected-color: #e0e0e0;
158-
--sms-remove-btn-hover-color: #ff8f8f;
159-
--sms-disabled-bg: #4f4f4f;
160-
--sms-li-disabled-bg: #454545;
161-
--sms-li-disabled-text: #888;
16282
}
16383
.modal-content h2 {
16484
margin-top: 0;
16585
}
166-
167-
.horizontal-selects {
168-
display: flex;
169-
gap: 1em;
170-
}
171-
17286
.modal-content button {
17387
background-color: #555;
17488
color: white;

0 commit comments

Comments
 (0)