import { SvelteComponentTyped } from "svelte"; import type { SvelteHTMLElements } from "svelte/elements"; export type CarbonSelectContext = { selectedValue: import("svelte/store").Writable; /** Use the first `SelectItem` value as the default value if `selected` is `undefined`. */ setDefaultValue: (id: string, value: string | number) => void; }; type $RestProps = SvelteHTMLElements["select"]; type $Props = { /** * Specify the selected item value. * @default undefined */ selected?: Value | undefined; /** * Set the size of the select input. * @default undefined */ size?: "xs" | "sm" | "xl"; /** * Set to `true` to use the inline variant * @default false */ inline?: boolean; /** * Set to `true` to enable the light variant * @default false */ light?: boolean; /** * Set to `true` to disable the select element * @default false */ disabled?: boolean; /** * Set an id for the select element * @default `ccs-${Math.random().toString(36)}` */ id?: string; /** * Specify a name attribute for the select element. * @default undefined */ name?: string; /** * Set to `true` to indicate an invalid state * @default false */ invalid?: boolean; /** * Specify the invalid state text * @default "" */ invalidText?: string; /** * Set to `true` to indicate a warning state * @default false */ warn?: boolean; /** * Specify the warning state text * @default "" */ warnText?: string; /** * Specify the helper text * @default "" */ helperText?: string; /** * Set to `true` to not render a label * @default false */ noLabel?: boolean; /** * Specify the label text * @default "" */ labelText?: string; /** * Set to `true` to visually hide the label text * @default false */ hideLabel?: boolean; /** * Obtain a reference to the select HTML element. * @default null */ ref?: null | HTMLSelectElement; /** * Set to `true` to mark the field as required * @default false */ required?: boolean; /** * Set to `true` for the select to be read-only * @default false */ readonly?: boolean; /** * Set to `true` to use the fluid variant. * Inherited from the parent `FluidForm` context, * so it does not need to be set when used inside `FluidForm`. * Cannot be combined with the inline variant. * @default false */ fluid?: boolean; labelChildren?: (this: void) => void; children?: (this: void) => void; [key: `data-${string}`]: unknown; }; export type SelectProps = Omit< $RestProps, keyof $Props > & $Props; export default class Select< Value extends string | number = string | number, > extends SvelteComponentTyped< SelectProps, { blur: WindowEventMap["blur"]; change: WindowEventMap["change"]; focus: WindowEventMap["focus"]; input: WindowEventMap["input"]; /** The selected value. */ update: CustomEvent; }, { default: Record; labelChildren: Record } > {}