@factorialco/f0-react 1.372.1 → 1.373.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/f0.d.ts CHANGED
@@ -2195,6 +2195,7 @@ export declare const defaultTranslations: {
2195
2195
  readonly selectAllItems: "Select all {{total}} items";
2196
2196
  readonly allItemsSelected: "All {{total}} items selected";
2197
2197
  };
2198
+ readonly noItemsSelected: "No items selected";
2198
2199
  };
2199
2200
  readonly filters: {
2200
2201
  readonly searchPlaceholder: "Search filters...";
@@ -4367,6 +4368,12 @@ declare type F0SelectBaseProps<T extends string, R = unknown> = {
4367
4368
  * Only displays the dropdown content with max height, border and scroll.
4368
4369
  */
4369
4370
  asList?: boolean;
4371
+ /**
4372
+ * When true, shows a selection preview panel on the right side of the dropdown
4373
+ * for multi-select mode. When false and filters are present, filters use compact mode.
4374
+ * @default false
4375
+ */
4376
+ showPreview?: boolean;
4370
4377
  };
4371
4378
 
4372
4379
  /**
@@ -4828,7 +4835,7 @@ declare interface FilterPickerBaseProps<Filters extends FiltersDefinition> {
4828
4835
  */
4829
4836
  export declare type FiltersDefinition<Keys extends string = string> = Record<Keys, FilterDefinition>;
4830
4837
 
4831
- export declare type FiltersMode = "default" | "compact" | "simple";
4838
+ export declare type FiltersMode = "default" | "compact" | "simple" | "inline";
4832
4839
 
4833
4840
  /**
4834
4841
  * Current state of all filters in a collection.
@@ -4843,6 +4850,8 @@ export declare type FiltersState<Definition extends Record<string, FilterDefinit
4843
4850
  declare type FilterTypeContext<Options extends object = never> = {
4844
4851
  schema: FilterTypeSchema<Options>;
4845
4852
  i18n: I18nContextType;
4853
+ /** The key of this filter in the FiltersDefinition (passed to chipLabel for nested label lookups) */
4854
+ filterKey?: string;
4846
4855
  };
4847
4856
 
4848
4857
  declare type FilterTypeDefinition<Value = unknown, Options extends object = never, EmptyValue = Value, OptionalOptions extends boolean = false> = {
@@ -4855,6 +4864,8 @@ declare type FilterTypeDefinition<Value = unknown, Options extends object = neve
4855
4864
  value: Value;
4856
4865
  onChange: (value: Value) => void;
4857
4866
  isCompactMode?: boolean;
4867
+ onFilterChange?: (key: string, value: unknown) => void;
4868
+ allFiltersValue?: Record<string, unknown>;
4858
4869
  }) => React.ReactNode;
4859
4870
  /**
4860
4871
  * The value label to display in the filter chips
@@ -5263,6 +5274,16 @@ declare type InFilterOptionItem<T = unknown> = {
5263
5274
  value: T;
5264
5275
  /** Human-readable label for the option */
5265
5276
  label: string;
5277
+ /**
5278
+ * Nested children that belong to a different filter key.
5279
+ * Enables hierarchical filtering (e.g., office -> space -> desk).
5280
+ */
5281
+ children?: {
5282
+ /** The filter key where child selections are stored in FiltersState */
5283
+ filterKey: string;
5284
+ /** Child options, which can themselves have children for infinite nesting */
5285
+ options: Array<InFilterOptionItem<T>>;
5286
+ };
5266
5287
  };
5267
5288
 
5268
5289
  /**
@@ -7543,7 +7564,7 @@ export declare function useSchemaDefinition(schema: F0FormSchema, sections?: Rec
7543
7564
  * Custom hook to manage selection state for items and groups in a data table
7544
7565
  * Supports single/multi selection, grouped data, pagination, and filtering
7545
7566
  */
7546
- export declare function useSelectable<R extends RecordType, Filters extends FiltersDefinition, Sortings extends SortingsDefinition, Grouping extends GroupingDefinition<R>>({ data, paginationInfo, source, selectionMode, selectedState, onSelectItems, disableSelectAll, isSearchActive, allPagesSelection, }: UseSelectableProps<R, Filters, Sortings, Grouping>): UseSelectableReturn<R, Filters>;
7567
+ export declare function useSelectable<R extends RecordType, Filters extends FiltersDefinition, Sortings extends SortingsDefinition, Grouping extends GroupingDefinition<R>>({ data, paginationInfo, source, selectionMode, selectedState, onSelectItems, disableSelectAll, isSearchActive, allPagesSelection, resetOnPageChange, }: UseSelectableProps<R, Filters, Sortings, Grouping>): UseSelectableReturn<R, Filters>;
7547
7568
 
7548
7569
  export declare type UseSelectableProps<R extends RecordType, Filters extends FiltersDefinition, Sortings extends SortingsDefinition, Grouping extends GroupingDefinition<R>> = {
7549
7570
  data: Data<R>;
@@ -7573,6 +7594,12 @@ export declare type UseSelectableProps<R extends RecordType, Filters extends Fil
7573
7594
  * - itemStatus only includes items from the current page
7574
7595
  */
7575
7596
  allPagesSelection?: boolean;
7597
+ /**
7598
+ * When true (default), clears selection when the page changes
7599
+ * (unless all items are selected). Set to false to persist
7600
+ * selections across page changes unconditionally.
7601
+ */
7602
+ resetOnPageChange?: boolean;
7576
7603
  };
7577
7604
 
7578
7605
  export declare type UseSelectableReturn<R extends RecordType, Filters extends FiltersDefinition> = {
@@ -7602,9 +7629,14 @@ export declare type UseSelectableReturn<R extends RecordType, Filters extends Fi
7602
7629
  */
7603
7630
  handleSelectItemChange: (itemOrId: R | SelectionId | readonly SelectionId[], checked: boolean) => void;
7604
7631
  /**
7605
- * Handles the change of the selected all items
7632
+ * Handles "select all" for the current page only
7606
7633
  */
7607
7634
  handleSelectAll: (checked: boolean) => void;
7635
+ /**
7636
+ * Handles "select all items" across all pages (full dataset).
7637
+ * Only meaningful when allPagesSelection is enabled.
7638
+ */
7639
+ handleSelectAllItems: (checked: boolean) => void;
7608
7640
  /**
7609
7641
  * Handles the change of the selected group.
7610
7642
  * Accepts either SelectionId(s) or a GroupRecord.