diff --git a/src/components/chip/UKChip.tsx b/src/components/chip/UKChip.tsx index 28bc623..4e3e5dc 100644 --- a/src/components/chip/UKChip.tsx +++ b/src/components/chip/UKChip.tsx @@ -1,12 +1,12 @@ +import ARROW_DROP_DOWN_ICON from "@material-symbols/svg-700/outlined/arrow_drop_down.svg"; +import CLOSE_ICON from "@material-symbols/svg-700/outlined/close.svg"; import clsx from "clsx"; -import { createSignal, type Component } from "solid-js"; +import { type Component, createSignal } from "solid-js"; +import UKAvatar from "../avatar/UKAvatar"; import UKIcon from "../icon/UKIcon"; +import UKMenu from "../menu/UKMenu"; import UKText from "../text/UKText"; import styles from "./UKChip.module.scss"; -import UKAvatar from "../avatar/UKAvatar"; -import CLOSE_ICON from "@material-symbols/svg-700/outlined/close.svg"; -import ARROW_DROP_DOWN_ICON from "@material-symbols/svg-700/outlined/arrow_drop_down.svg"; -import UKMenu from "../menu/UKMenu"; interface BaseChip { class?: string; @@ -28,10 +28,17 @@ interface RemovableFilterChip extends BaseChip { interface DropDownFilterChip extends BaseChip { type: "filter_dropdown"; items: { icon?: string; label: string; id: string }[]; - defaultSelectionId: string; onSelectItem: (itemId: string) => void; } +interface DropDownFilterChipWithDefaultSelection extends DropDownFilterChip { + defaultSelectionId: string; +} + +interface DropDownFilterChipWithPlaceholderText extends DropDownFilterChip { + placeholderText: string; +} + interface DeselectableFilterChip extends BaseChip { type: "filter_deselectable"; children: string; // label text @@ -52,9 +59,17 @@ interface SuggestionChip extends BaseChip { onClick?: () => void; } -const UKChip: Component = (props) => { +const UKChip: Component< + | AssistChip + | RemovableFilterChip + | DropDownFilterChipWithDefaultSelection + | DropDownFilterChipWithPlaceholderText + | DeselectableFilterChip + | InputChip + | SuggestionChip +> = (props) => { const [dropdownSelected, setDropdownSelected] = createSignal<{ x: number; y: number; align: "right"; minWidth: number } | false>(false); - const [selectedValue, setSelectedValue] = createSignal(undefined); + const [selectedValue, setSelectedValue] = createSignal("defaultSelectionId" in props ? props.defaultSelectionId : undefined); return (