Skip to content

Commit 2483a2f

Browse files
refactor(multiselect): allow passing innerClass, reduce div nesting
1 parent bb0a67f commit 2483a2f

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed

lib/input/select/Multiselect.tsx

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@ import { classMerge } from "~ui/utils/classMerge"
1313
import type { SignalObject } from "~ui/utils/createSignalObject"
1414
import type { MayHaveChildren } from "~ui/utils/MayHaveChildren"
1515
import type { MayHaveClass } from "~ui/utils/MayHaveClass"
16+
import type { MayHaveInnerClass } from "~ui/utils/MayHaveInnerClass"
1617

1718
/**
1819
* https://github.com/radix-ui/primitives/blob/main/packages/react/checkbox/src/Checkbox.tsx
1920
*/
20-
export interface Multiselect2Props extends MayHaveClass, MayHaveChildren {
21+
export interface Multiselect2Props extends MayHaveClass, MayHaveInnerClass, MayHaveChildren {
2122
buttonProps: CorvuPopoverProps
2223
textNoEntries?: string
2324
textAddEntry?: string
@@ -47,21 +48,13 @@ export function Multiselect(p: Multiselect2Props) {
4748
)}
4849
>
4950
<SelectedValues valueSignal={p.valueSignal} valueText={p.valueText} />
50-
<CorvuPopover {...buttonProps}>
51-
<div class={classArr("grid grid-cols-3 gap-x-2 gap-y-1")}>
52-
<OptionList valueSignal={p.valueSignal} getOptions={p.getOptions} valueText={p.valueText} />
53-
</div>
51+
<CorvuPopover {...buttonProps} innerClass={classArr(p.innerClass ?? "grid grid-cols-3 gap-x-2 gap-y-1")}>
52+
<OptionList valueSignal={p.valueSignal} getOptions={p.getOptions} valueText={p.valueText} />
5453
</CorvuPopover>
5554
</div>
5655
)
5756
}
5857

59-
interface MultiselectOptionState {
60-
option: string
61-
valueSignal: SignalObject<string[]>
62-
valueText?: (value: string) => string
63-
}
64-
6558
function SelectedValues(p: { valueSignal: SignalObject<string[]>; valueText?: (value: string) => string }) {
6659
return (
6760
<div class={"flex flex-wrap gap-1"}>
@@ -72,6 +65,11 @@ function SelectedValues(p: { valueSignal: SignalObject<string[]>; valueText?: (v
7265
)
7366
}
7467

68+
interface MultiselectOptionState {
69+
option: string
70+
valueSignal: SignalObject<string[]>
71+
valueText?: (value: string) => string
72+
}
7573
function SelectedValue(p: MultiselectOptionState) {
7674
const label = () => (p.valueText ? p.valueText(p.option) : p.option)
7775
return (

0 commit comments

Comments
 (0)