Skip to content

Commit a729efc

Browse files
authored
Merge pull request #207 from nais/style_actionmenu
Add onselect callback to ActionMenuRadioItem and update styles on ActionMenuRadioItem and ActionMenuCheckboxItem
2 parents 0daef36 + 5d46db5 commit a729efc

File tree

7 files changed

+197
-1317
lines changed

7 files changed

+197
-1317
lines changed

.changeset/selfish-avocados-roll.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@nais/ds-svelte-community": patch
3+
---
4+
5+
Style changes to ActionMenuRadioItem and ActionMenuCheckboxItem. Add onselect callback to ActionMenuRadioItem.

.tool-versions

+1
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
bun 1.2.0
2+
nodejs 22.6.0

bun.lock

+26-242
Large diffs are not rendered by default.

packages/ds-svelte-community/src/lib/components/ActionMenu/ActionMenuCheckboxItem.svelte

+4
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,10 @@
9191
</button>
9292

9393
<style>
94+
button {
95+
border: none;
96+
background-color: transparent;
97+
}
9498
@media (hover: hover) {
9599
.navds-action-menu__item:focus {
96100
outline: none;

packages/ds-svelte-community/src/lib/components/ActionMenu/ActionMenuRadioItem.svelte

+8-1
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,13 @@
1111
* Content of the radio item.
1212
*/
1313
children: Snippet;
14+
/**
15+
* Callback when the item is selected.
16+
*/
17+
onselect?: (value: unknown) => void;
1418
}
1519
16-
let { value, children }: Props = $props();
20+
let { value, children, onselect }: Props = $props();
1721
1822
const ctx = getRadioGroupContext();
1923
@@ -26,9 +30,11 @@
2630
tabindex="0"
2731
aria-checked={checked}
2832
class="navds-action-menu__item navds-action-menu__item--has-icon"
33+
style="border: none;"
2934
data-state={state}
3035
onclick={() => {
3136
ctx.setValue(value);
37+
onselect?.(value);
3238
}}
3339
>
3440
{@render children()}
@@ -87,6 +93,7 @@
8793
button {
8894
width: 100%;
8995
box-sizing: border-box;
96+
background-color: transparent;
9097
}
9198
9299
@media (hover: hover) {

packages/ds-svelte-community/src/routes/components/ActionMenu/+page.svelte

+18-5
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@
6565
const handleCheckboxChange = (checkboxId: string, checked: boolean) => {
6666
console.log(checkboxId, checked);
6767
};
68+
const handleRadioButtonChange = (value: unknown) => {
69+
console.log(value);
70+
};
6871
</script>
6972

7073
<Doc
@@ -250,17 +253,27 @@
250253
</ActionMenuCheckboxItem>
251254
<ActionMenuCheckboxItem
252255
bind:checked={views.tags}
253-
onchange={(checked) => handleCheckboxChange("tags", checked)}
256+
onchange={(checked) => {
257+
handleCheckboxChange("tags", checked);
258+
}}
254259
>
255260
Tags
256261
</ActionMenuCheckboxItem>
257262
</ActionMenuGroup>
258263
<ActionMenuDivider />
259264
<ActionMenuRadioGroup bind:value={rows} label="Rows per page">
260-
<ActionMenuRadioItem value="5">5</ActionMenuRadioItem>
261-
<ActionMenuRadioItem value="10">10</ActionMenuRadioItem>
262-
<ActionMenuRadioItem value="25">25</ActionMenuRadioItem>
263-
<ActionMenuRadioItem value="50">50</ActionMenuRadioItem>
265+
<ActionMenuRadioItem value="5" onselect={(value) => handleRadioButtonChange(value)}
266+
>5</ActionMenuRadioItem
267+
>
268+
<ActionMenuRadioItem value="10" onselect={(value) => handleRadioButtonChange(value)}
269+
>10</ActionMenuRadioItem
270+
>
271+
<ActionMenuRadioItem value="25" onselect={(value) => handleRadioButtonChange(value)}
272+
>25</ActionMenuRadioItem
273+
>
274+
<ActionMenuRadioItem value="50" onselect={(value) => handleRadioButtonChange(value)}
275+
>50</ActionMenuRadioItem
276+
>
264277
</ActionMenuRadioGroup>
265278
</ActionMenu>
266279

0 commit comments

Comments
 (0)