UNPKG

@tachui/primitives

Version:

Basic UI components for tachUI framework

153 lines 4.72 kB
/** * Enhanced Picker Component (Phase 6.4.3) * * SwiftUI-inspired Picker component with dropdown, wheel, and segmented * variants for selecting from a list of options. */ import type { ModifiableComponent, ModifierBuilder } from '@tachui/core'; import type { Signal } from '@tachui/core'; import type { ComponentInstance, ComponentProps } from '@tachui/core'; /** * Picker option structure */ export interface PickerOption<T = any> { value: T; label: string; disabled?: boolean; icon?: string; description?: string; } /** * Picker component properties */ export interface PickerProps<T = any> extends ComponentProps { selection: T | Signal<T>; options: PickerOption<T>[] | Signal<PickerOption<T>[]>; onSelectionChange?: (value: T) => void; variant?: 'dropdown' | 'wheel' | 'segmented' | 'menu'; title?: string | (() => string) | Signal<string>; placeholder?: string; multiple?: boolean; searchable?: boolean; clearable?: boolean; disabled?: boolean | Signal<boolean>; size?: 'small' | 'medium' | 'large'; tint?: string; accessibilityLabel?: string; accessibilityHint?: string; } /** * Enhanced Picker component class */ export declare class EnhancedPicker<T = any> implements ComponentInstance<PickerProps<T>> { props: PickerProps<T>; readonly type: "component"; readonly id: string; mounted: boolean; cleanup: (() => void)[]; private isOpen; private setIsOpen; private searchTerm; private setSearchTerm; constructor(props: PickerProps<T>); /** * Get current selection value */ private getSelection; /** * Get current options */ private getOptions; /** * Filter options based on search term */ private getFilteredOptions; /** * Check if picker is disabled */ private isDisabled; /** * Get selected option */ private getSelectedOption; /** * Handle option selection */ private handleSelection; /** * Toggle picker open state */ private toggleOpen; /** * Get picker size styles */ private getSizeStyles; /** * Render dropdown variant */ private renderDropdown; /** * Render segmented variant */ private renderSegmented; /** * Render wheel variant (simplified) */ private renderWheel; render(): import("@tachui/core").DOMNode; } /** * Picker component function */ export declare function Picker<T = any>(selection: T | Signal<T>, options: PickerOption<T>[] | Signal<PickerOption<T>[]>, props?: Omit<PickerProps<T>, 'selection' | 'options'>): ModifiableComponent<PickerProps<T>> & { modifier: ModifierBuilder<ModifiableComponent<PickerProps<T>>>; }; /** * Picker style variants */ export declare const PickerStyles: { /** * Dropdown picker (default) */ Dropdown<T = any>(selection: T | Signal<T>, options: PickerOption<T>[] | Signal<PickerOption<T>[]>, props?: Omit<PickerProps<T>, "selection" | "options" | "variant">): ModifiableComponent<PickerProps<T>> & { modifier: ModifierBuilder<ModifiableComponent<PickerProps<T>>>; }; /** * Segmented picker */ Segmented<T = any>(selection: T | Signal<T>, options: PickerOption<T>[] | Signal<PickerOption<T>[]>, props?: Omit<PickerProps<T>, "selection" | "options" | "variant">): ModifiableComponent<PickerProps<T>> & { modifier: ModifierBuilder<ModifiableComponent<PickerProps<T>>>; }; /** * Wheel picker (native select) */ Wheel<T = any>(selection: T | Signal<T>, options: PickerOption<T>[] | Signal<PickerOption<T>[]>, props?: Omit<PickerProps<T>, "selection" | "options" | "variant">): ModifiableComponent<PickerProps<T>> & { modifier: ModifierBuilder<ModifiableComponent<PickerProps<T>>>; }; /** * Menu picker */ Menu<T = any>(selection: T | Signal<T>, options: PickerOption<T>[] | Signal<PickerOption<T>[]>, props?: Omit<PickerProps<T>, "selection" | "options" | "variant">): ModifiableComponent<PickerProps<T>> & { modifier: ModifierBuilder<ModifiableComponent<PickerProps<T>>>; }; }; /** * Picker utilities */ export declare const PickerUtils: { /** * Create options from simple array */ fromArray<T>(items: T[], labelKey?: keyof T): PickerOption<T>[]; /** * Create options from enum */ fromEnum(enumObject: Record<string, string | number>): PickerOption<string | number>[]; /** * Group options by category */ grouped<T>(options: (PickerOption<T> & { category?: string; })[]): Record<string, PickerOption<T>[]>; }; //# sourceMappingURL=Picker.d.ts.map