@factorialco/f0-react 6.100.1 → 6.101.0

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.
@@ -9859,6 +9859,31 @@ declare type F0SelectPopupProps<T extends string, R = unknown> = {
9859
9859
  * @default false for field selects; true for inline selects
9860
9860
  */
9861
9861
  fitContentWidth?: boolean;
9862
+ /**
9863
+ * What the TRIGGER says for a selected option — decided once for the whole
9864
+ * select, instead of per option inside `mapOptions`.
9865
+ *
9866
+ * A row is read in the context the list gives it: under its group headers,
9867
+ * beside its siblings. The trigger has none of that, so a label that is clear
9868
+ * in the list can be ambiguous alone ("Backend", once the project header is
9869
+ * gone). This is where the context goes back on, in whatever order reads
9870
+ * best — `"Ship the API (Backend, Apollo)"` as readily as
9871
+ * `"Apollo › Backend › Ship the API"`.
9872
+ *
9873
+ * Receives the option — its own `label`, and the `selectedLabel` `mapOptions`
9874
+ * set if any — together with the record it was mapped from. Build the path
9875
+ * from the RECORD (`item.project.name`), not from the group headers on
9876
+ * screen: a selection made earlier, or one restored from `defaultItem`, is
9877
+ * shown by the trigger while its group is nowhere in the loaded data, and the
9878
+ * record is the part that is always there.
9879
+ *
9880
+ * Returns the string to show. It replaces `selectedLabel` for every selected
9881
+ * option; the rows in the list are untouched.
9882
+ */
9883
+ getSelectedLabel?: (selection: {
9884
+ option: F0SelectItemObject<T, ResolvedRecordType<R>>;
9885
+ item?: ResolvedRecordType<R>;
9886
+ }) => string;
9862
9887
  } & WithDataTestIdProps;
9863
9888
 
9864
9889
  /**
@@ -10742,6 +10767,14 @@ declare const GROUP_ID_SYMBOL: unique symbol;
10742
10767
  export declare type GroupingDefinition<R extends RecordType> = {
10743
10768
  /** Whether grouping is mandatory or the user can chose not to group */
10744
10769
  mandatory?: boolean;
10770
+ /**
10771
+ * Hides the grouping picker, leaving the grouping itself in force. For a
10772
+ * grouping the product decides and the user does not: the headers render,
10773
+ * the control to change them never does.
10774
+ *
10775
+ * Pair it with `mandatory: true` and a `defaultGrouping`/`currentGrouping`,
10776
+ * or the state can still arrive as "no grouping" with no way to leave it.
10777
+ */
10745
10778
  hideSelector?: boolean;
10746
10779
  groupBy: {
10747
10780
  [K in RecordPaths<R>]?: {
@@ -10764,19 +10797,50 @@ export declare type GroupingDefinition<R extends RecordType> = {
10764
10797
  });
10765
10798
 
10766
10799
  /**
10767
- * The selected the grouping state
10800
+ * One level of grouping: a field of the definition's `groupBy` map, plus the
10801
+ * direction its groups are laid out in.
10768
10802
  * @template Grouping - The grouping definition
10769
10803
  */
10770
- export declare type GroupingState<R extends RecordType, Grouping extends GroupingDefinition<R>> = {
10804
+ export declare type GroupingLevelState<R extends RecordType, Grouping extends GroupingDefinition<R>> = {
10771
10805
  field: keyof Grouping["groupBy"];
10772
10806
  order?: SortOrder;
10773
- } | undefined;
10807
+ };
10808
+
10809
+ /**
10810
+ * The selected the grouping state
10811
+ * @template Grouping - The grouping definition
10812
+ */
10813
+ export declare type GroupingState<R extends RecordType, Grouping extends GroupingDefinition<R>> = (GroupingLevelState<R, Grouping> & {
10814
+ /**
10815
+ * Extra grouping levels, nested inside `field` in the order given: the
10816
+ * second level splits each first-level group, the third splits each of
10817
+ * those, and so on.
10818
+ *
10819
+ * Every level names another field of the SAME `groupBy` map, so it reuses
10820
+ * that field's `name` and `label` and needs no configuration of its own.
10821
+ * A level whose field the definition doesn't declare is ignored rather
10822
+ * than thrown on, so a stale `thenBy` degrades to fewer levels instead of
10823
+ * an empty list.
10824
+ *
10825
+ * Renderers that don't know about nesting see only the first level: each
10826
+ * top-level group still carries all of its records flattened in
10827
+ * `records`, exactly as it does without `thenBy`.
10828
+ */
10829
+ thenBy?: GroupingLevelState<R, Grouping>[];
10830
+ }) | undefined;
10774
10831
 
10775
10832
  declare type GroupRecord<RecordType> = {
10776
10833
  key: string;
10777
10834
  label: string | Promise<string>;
10778
10835
  itemCount: number | undefined | Promise<number | undefined>;
10779
10836
  records: RecordType[];
10837
+ /**
10838
+ * The next grouping level cut out of `records`, present only when the
10839
+ * grouping state asked for one (`thenBy`). `records` stays complete either
10840
+ * way, so a renderer that ignores this field shows exactly what it showed
10841
+ * before nesting existed.
10842
+ */
10843
+ subGroups?: GroupRecord<RecordType>[];
10780
10844
  };
10781
10845
 
10782
10846
  /**
@@ -16929,9 +16993,11 @@ declare module "@tiptap/core" {
16929
16993
 
16930
16994
  declare module "@tiptap/core" {
16931
16995
  interface Commands<ReturnType> {
16932
- fontSize: {
16933
- setFontSize: (fontSize: string) => ReturnType;
16934
- unsetFontSize: () => ReturnType;
16996
+ enhanceHighlight: {
16997
+ setEnhanceHighlight: (from: number, to: number, options?: {
16998
+ placeholder?: string;
16999
+ }) => ReturnType;
17000
+ clearEnhanceHighlight: () => ReturnType;
16935
17001
  };
16936
17002
  }
16937
17003
  }
@@ -16939,11 +17005,9 @@ declare module "@tiptap/core" {
16939
17005
 
16940
17006
  declare module "@tiptap/core" {
16941
17007
  interface Commands<ReturnType> {
16942
- enhanceHighlight: {
16943
- setEnhanceHighlight: (from: number, to: number, options?: {
16944
- placeholder?: string;
16945
- }) => ReturnType;
16946
- clearEnhanceHighlight: () => ReturnType;
17008
+ fontSize: {
17009
+ setFontSize: (fontSize: string) => ReturnType;
17010
+ unsetFontSize: () => ReturnType;
16947
17011
  };
16948
17012
  }
16949
17013
  }
@@ -1,6 +1,6 @@
1
- import { x as s, w as t, A as i, a as o, L as r, ax as n, aw as l, ay as d, B as S, y as C, D as g, N as m, aE as u, aF as b, aO as c, z as h, C as P, aD as T, aP as p, I as F, G as I, a5 as E, b9 as A, bg as B, M as L, b8 as y, E as D, b as k, d as W, k as _, am as v, an as f, ak as O, J as M, at as R, F as x, l as H, p as N, q as V, n as w, e as G, s as z, t as U, H as j, aS as q, aT as J, aH as K, as as X, aX as Q, b6 as Y, az as Z, a8 as $, aR as aa, W as ea, ae as sa, O as ta, bk as ia, X as oa, P as ra, Q as na, T as la, aA as da, R as Sa, b4 as Ca, ba as ga, S as ma, a9 as ua, aa as ba, a0 as ca, a1 as ha, a2 as Pa, $ as Ta, a3 as pa, Y as Fa, a4 as Ia, a6 as Ea, a7 as Aa, ab as Ba, ac as La, be as ya, bd as Da, av as ka, au as Wa, aC as _a, aQ as va, aN as fa, aB as Oa, ad as Ma, aI as Ra, bf as xa, bi as Ha, aG as Na, aL as Va, aJ as wa, bj as Ga, aM as za, aK as Ua, bh as ja, c as qa, g as Ja, ah as Ka, aj as Xa, bc as Qa, bb as Ya, ai as Za, ap as $a, f as ae, o as ee, r as se, i as te, j as ie, a_ as oe, aY as re, aq as ne, ar as le, aW as de, b7 as Se, aZ as Ce, h as ge, v as me, b2 as ue, aV as be, a$ as ce, af as he, b5 as Pe, u as Te, al as pe, ag as Fe, ao as Ie, aU as Ee, V as Ae, U as Be, K as Le, _ as ye, Z as De, b3 as ke, b1 as We, b0 as _e } from "./experimental-Cr-mAy-h.js";
2
- import { dS as fe, es as Oe, er as Me, eF as Re, dp as xe, ep as He, cf as Ne, c5 as Ve, cc as we, ek as Ge, b_ as ze, b_ as Ue, bT as je, el as qe, ci as Je, e6 as Ke, ck as Xe, eI as Qe, eq as Ye, eB as Ze, eC as $e, d7 as as, eG as es, k as ss, dT as ts, cM as is, eo as os, eu as rs, et as ns, T as ls, h as ds, bU as Ss, eD as Cs, eJ as gs, eE as ms, eH as us, eA as bs, ex as cs, ez as hs, ev as Ps, em as Ts, en as ps, eg as Fs, ey as Is, ew as Es } from "./F0CanvasPanel-CE1gNxgB.js";
3
- import { ay as Bs, az as Ls, a6 as ys, a7 as Ds, a4 as ks, ah as Ws, C as _s, a8 as vs, aK as fs, ad as Os, aJ as Ms, ag as Rs, a5 as xs, aw as Hs, aM as Ns, aL as Vs, ao as ws, ai as Gs, ar as zs, aP as Us, a3 as js, at as qs, aq as Js, al as Ks, aR as Xs, am as Qs, au as Ys, av as Zs, a9 as $s, aN as at, aO as et, an as st, ax as tt, aG as it, O as ot, aI as rt, aa as nt, aT as lt, ac as dt, ae as St, ar as Ct, aQ as gt, as as mt, ap as ut, aS as bt, ab as ct, W as ht, af as Pt, a2 as Tt, a0 as pt, a1 as Ft, aC as It, aD as Et, aA as At, aH as Bt, ak as Lt, aj as yt, aE as Dt, m as kt, aB as Wt, aF as _t, D as vt } from "./CoachmarkProvider-DyBiw5zY.js";
1
+ import { x as s, w as t, A as i, a as o, L as r, ax as n, aw as l, ay as d, B as S, y as C, D as g, N as m, aE as u, aF as b, aO as c, z as h, C as P, aD as T, aP as p, I as F, G as I, a5 as E, b9 as A, bg as B, M as L, b8 as y, E as D, b as k, d as W, k as _, am as v, an as f, ak as O, J as M, at as R, F as x, l as H, p as N, q as V, n as w, e as G, s as z, t as U, H as j, aS as q, aT as J, aH as K, as as X, aX as Q, b6 as Y, az as Z, a8 as $, aR as aa, W as ea, ae as sa, O as ta, bk as ia, X as oa, P as ra, Q as na, T as la, aA as da, R as Sa, b4 as Ca, ba as ga, S as ma, a9 as ua, aa as ba, a0 as ca, a1 as ha, a2 as Pa, $ as Ta, a3 as pa, Y as Fa, a4 as Ia, a6 as Ea, a7 as Aa, ab as Ba, ac as La, be as ya, bd as Da, av as ka, au as Wa, aC as _a, aQ as va, aN as fa, aB as Oa, ad as Ma, aI as Ra, bf as xa, bi as Ha, aG as Na, aL as Va, aJ as wa, bj as Ga, aM as za, aK as Ua, bh as ja, c as qa, g as Ja, ah as Ka, aj as Xa, bc as Qa, bb as Ya, ai as Za, ap as $a, f as ae, o as ee, r as se, i as te, j as ie, a_ as oe, aY as re, aq as ne, ar as le, aW as de, b7 as Se, aZ as Ce, h as ge, v as me, b2 as ue, aV as be, a$ as ce, af as he, b5 as Pe, u as Te, al as pe, ag as Fe, ao as Ie, aU as Ee, V as Ae, U as Be, K as Le, _ as ye, Z as De, b3 as ke, b1 as We, b0 as _e } from "./experimental-BamzvBVI.js";
2
+ import { dS as fe, es as Oe, er as Me, eF as Re, dp as xe, ep as He, cf as Ne, c5 as Ve, cc as we, ek as Ge, b_ as ze, b_ as Ue, bT as je, el as qe, ci as Je, e6 as Ke, ck as Xe, eI as Qe, eq as Ye, eB as Ze, eC as $e, d7 as as, eG as es, k as ss, dT as ts, cM as is, eo as os, eu as rs, et as ns, T as ls, h as ds, bU as Ss, eD as Cs, eJ as gs, eE as ms, eH as us, eA as bs, ex as cs, ez as hs, ev as Ps, em as Ts, en as ps, eg as Fs, ey as Is, ew as Es } from "./F0CanvasPanel-B_HMcMEG.js";
3
+ import { ay as Bs, az as Ls, a6 as ys, a7 as Ds, a4 as ks, ah as Ws, C as _s, a8 as vs, aK as fs, ad as Os, aJ as Ms, ag as Rs, a5 as xs, aw as Hs, aM as Ns, aL as Vs, ao as ws, ai as Gs, ar as zs, aP as Us, a3 as js, at as qs, aq as Js, al as Ks, aR as Xs, am as Qs, au as Ys, av as Zs, a9 as $s, aN as at, aO as et, an as st, ax as tt, aG as it, O as ot, aI as rt, aa as nt, aT as lt, ac as dt, ae as St, ar as Ct, aQ as gt, as as mt, ap as ut, aS as bt, ab as ct, W as ht, af as Pt, a2 as Tt, a0 as pt, a1 as Ft, aC as It, aD as Et, aA as At, aH as Bt, ak as Lt, aj as yt, aE as Dt, m as kt, aB as Wt, aF as _t, D as vt } from "./CoachmarkProvider-jpNFEH87.js";
4
4
  export {
5
5
  Bs as AUTO_PER_PAGE_MAX,
6
6
  Ls as AUTO_PER_PAGE_MIN_RESERVED_ROWS,
package/dist/f0.d.ts CHANGED
@@ -12985,6 +12985,31 @@ declare type F0SelectPopupProps<T extends string, R = unknown> = {
12985
12985
  * @default false for field selects; true for inline selects
12986
12986
  */
12987
12987
  fitContentWidth?: boolean;
12988
+ /**
12989
+ * What the TRIGGER says for a selected option — decided once for the whole
12990
+ * select, instead of per option inside `mapOptions`.
12991
+ *
12992
+ * A row is read in the context the list gives it: under its group headers,
12993
+ * beside its siblings. The trigger has none of that, so a label that is clear
12994
+ * in the list can be ambiguous alone ("Backend", once the project header is
12995
+ * gone). This is where the context goes back on, in whatever order reads
12996
+ * best — `"Ship the API (Backend, Apollo)"` as readily as
12997
+ * `"Apollo › Backend › Ship the API"`.
12998
+ *
12999
+ * Receives the option — its own `label`, and the `selectedLabel` `mapOptions`
13000
+ * set if any — together with the record it was mapped from. Build the path
13001
+ * from the RECORD (`item.project.name`), not from the group headers on
13002
+ * screen: a selection made earlier, or one restored from `defaultItem`, is
13003
+ * shown by the trigger while its group is nowhere in the loaded data, and the
13004
+ * record is the part that is always there.
13005
+ *
13006
+ * Returns the string to show. It replaces `selectedLabel` for every selected
13007
+ * option; the rows in the list are untouched.
13008
+ */
13009
+ getSelectedLabel?: (selection: {
13010
+ option: F0SelectItemObject<T, ResolvedRecordType<R>>;
13011
+ item?: ResolvedRecordType<R>;
13012
+ }) => string;
12988
13013
  } & WithDataTestIdProps;
12989
13014
 
12990
13015
  /**
@@ -14671,6 +14696,15 @@ export declare interface GridStackReactWidget extends Omit<GridStackWidget, "con
14671
14696
  */
14672
14697
  export declare const GROUP_ID_SYMBOL: unique symbol;
14673
14698
 
14699
+ /**
14700
+ * Joins a nested group's key to its parent's. Sub-group keys have to be unique
14701
+ * across the whole tree — "Barcelona" under Engineering and "Barcelona" under
14702
+ * Sales are two different groups, and everything downstream (open/closed state,
14703
+ * selection) addresses a group by its key alone. A unit separator keeps the key
14704
+ * unambiguous without colliding with anything that can appear in a field value.
14705
+ */
14706
+ export declare const GROUP_KEY_SEPARATOR = "\u001F";
14707
+
14674
14708
  declare interface GroupGridProps<Widget extends GroupGridWidget, Deps extends Record<string, unknown> = Record<string, unknown>> {
14675
14709
  widgets: Optional<Widget, "x" | "y">[];
14676
14710
  editMode?: boolean;
@@ -14720,6 +14754,14 @@ declare type GroupGridWidgetSize = {
14720
14754
  export declare type GroupingDefinition<R extends RecordType> = {
14721
14755
  /** Whether grouping is mandatory or the user can chose not to group */
14722
14756
  mandatory?: boolean;
14757
+ /**
14758
+ * Hides the grouping picker, leaving the grouping itself in force. For a
14759
+ * grouping the product decides and the user does not: the headers render,
14760
+ * the control to change them never does.
14761
+ *
14762
+ * Pair it with `mandatory: true` and a `defaultGrouping`/`currentGrouping`,
14763
+ * or the state can still arrive as "no grouping" with no way to leave it.
14764
+ */
14723
14765
  hideSelector?: boolean;
14724
14766
  groupBy: {
14725
14767
  [K in RecordPaths<R>]?: {
@@ -14742,19 +14784,50 @@ export declare type GroupingDefinition<R extends RecordType> = {
14742
14784
  });
14743
14785
 
14744
14786
  /**
14745
- * The selected the grouping state
14787
+ * One level of grouping: a field of the definition's `groupBy` map, plus the
14788
+ * direction its groups are laid out in.
14746
14789
  * @template Grouping - The grouping definition
14747
14790
  */
14748
- export declare type GroupingState<R extends RecordType, Grouping extends GroupingDefinition<R>> = {
14791
+ export declare type GroupingLevelState<R extends RecordType, Grouping extends GroupingDefinition<R>> = {
14749
14792
  field: keyof Grouping["groupBy"];
14750
14793
  order?: SortOrder;
14751
- } | undefined;
14794
+ };
14795
+
14796
+ /**
14797
+ * The selected the grouping state
14798
+ * @template Grouping - The grouping definition
14799
+ */
14800
+ export declare type GroupingState<R extends RecordType, Grouping extends GroupingDefinition<R>> = (GroupingLevelState<R, Grouping> & {
14801
+ /**
14802
+ * Extra grouping levels, nested inside `field` in the order given: the
14803
+ * second level splits each first-level group, the third splits each of
14804
+ * those, and so on.
14805
+ *
14806
+ * Every level names another field of the SAME `groupBy` map, so it reuses
14807
+ * that field's `name` and `label` and needs no configuration of its own.
14808
+ * A level whose field the definition doesn't declare is ignored rather
14809
+ * than thrown on, so a stale `thenBy` degrades to fewer levels instead of
14810
+ * an empty list.
14811
+ *
14812
+ * Renderers that don't know about nesting see only the first level: each
14813
+ * top-level group still carries all of its records flattened in
14814
+ * `records`, exactly as it does without `thenBy`.
14815
+ */
14816
+ thenBy?: GroupingLevelState<R, Grouping>[];
14817
+ }) | undefined;
14752
14818
 
14753
14819
  export declare type GroupRecord<RecordType> = {
14754
14820
  key: string;
14755
14821
  label: string | Promise<string>;
14756
14822
  itemCount: number | undefined | Promise<number | undefined>;
14757
14823
  records: RecordType[];
14824
+ /**
14825
+ * The next grouping level cut out of `records`, present only when the
14826
+ * grouping state asked for one (`thenBy`). `records` stays complete either
14827
+ * way, so a renderer that ignores this field shows exactly what it showed
14828
+ * before nesting existed.
14829
+ */
14830
+ subGroups?: GroupRecord<RecordType>[];
14758
14831
  };
14759
14832
 
14760
14833
  /**
@@ -20781,9 +20854,11 @@ declare module "@tiptap/core" {
20781
20854
 
20782
20855
  declare module "@tiptap/core" {
20783
20856
  interface Commands<ReturnType> {
20784
- fontSize: {
20785
- setFontSize: (fontSize: string) => ReturnType;
20786
- unsetFontSize: () => ReturnType;
20857
+ enhanceHighlight: {
20858
+ setEnhanceHighlight: (from: number, to: number, options?: {
20859
+ placeholder?: string;
20860
+ }) => ReturnType;
20861
+ clearEnhanceHighlight: () => ReturnType;
20787
20862
  };
20788
20863
  }
20789
20864
  }
@@ -20791,11 +20866,9 @@ declare module "@tiptap/core" {
20791
20866
 
20792
20867
  declare module "@tiptap/core" {
20793
20868
  interface Commands<ReturnType> {
20794
- enhanceHighlight: {
20795
- setEnhanceHighlight: (from: number, to: number, options?: {
20796
- placeholder?: string;
20797
- }) => ReturnType;
20798
- clearEnhanceHighlight: () => ReturnType;
20869
+ fontSize: {
20870
+ setFontSize: (fontSize: string) => ReturnType;
20871
+ unsetFontSize: () => ReturnType;
20799
20872
  };
20800
20873
  }
20801
20874
  }