UNPKG

@dossierhq/design

Version:

The design system for Dossier.

46 lines (45 loc) 2.57 kB
import type { Reducer } from 'react'; export interface MultipleSelectorItem<TId extends string = string> { id: TId; removable?: boolean; } export type MultipleSelectorReducer<TItem extends MultipleSelectorItem> = Reducer<MultipleSelectorState<TItem>, MultipleSelectorStateAction<TItem>>; export interface MultipleSelectorStateInitializerArgs<TItem extends MultipleSelectorItem> { items: TItem[]; selectedIds?: Array<TItem['id']>; } export interface MultipleSelectorState<TItem extends MultipleSelectorItem> { items: TItem[]; selectedIds: Array<TItem['id']>; containsRemovableSelection: boolean; } export interface MultipleSelectorStateAction<TItem extends MultipleSelectorItem> { reduce(state: Readonly<MultipleSelectorState<TItem>>): Readonly<MultipleSelectorState<TItem>>; } export declare function initializeMultipleSelectorState<TItem extends MultipleSelectorItem>({ items, selectedIds, }: MultipleSelectorStateInitializerArgs<TItem>): MultipleSelectorState<TItem>; export declare function reduceMultipleSelectorState<TItem extends MultipleSelectorItem>(state: Readonly<MultipleSelectorState<TItem>>, action: MultipleSelectorStateAction<TItem>): Readonly<MultipleSelectorState<TItem>>; declare class ClearSelectionAction<TItem extends MultipleSelectorItem> implements MultipleSelectorStateAction<TItem> { reduce(state: Readonly<MultipleSelectorState<TItem>>): Readonly<MultipleSelectorState<TItem>>; } declare class SetSelectionAction<TItem extends MultipleSelectorItem> implements MultipleSelectorStateAction<TItem> { private readonly selectedIds; constructor(selectedIds: string[]); reduce(state: Readonly<MultipleSelectorState<TItem>>): Readonly<MultipleSelectorState<TItem>>; } declare class ToggleItemAction<TItem extends MultipleSelectorItem> implements MultipleSelectorStateAction<TItem> { private readonly id; constructor(id: TItem['id']); reduce(state: Readonly<MultipleSelectorState<TItem>>): Readonly<MultipleSelectorState<TItem>>; } declare class UpdateItemsAction<TItem extends MultipleSelectorItem<TId>, TId extends string = string> implements MultipleSelectorStateAction<TItem> { private readonly items; constructor(items: TItem[]); reduce(state: Readonly<MultipleSelectorState<TItem>>): Readonly<MultipleSelectorState<TItem>>; } export declare const MultipleSelectorStateActions: { ClearSelection: typeof ClearSelectionAction; SetSelection: typeof SetSelectionAction; ToggleItem: typeof ToggleItemAction; UpdateItems: typeof UpdateItemsAction; }; export {};