@ai-matrx/records-ui 0.81.0 → 0.83.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.
- package/CHANGELOG.md +56 -0
- package/dist/index.cjs +1179 -467
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +184 -12
- package/dist/index.d.ts +184 -12
- package/dist/index.js +1255 -543
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { ReactNode, ComponentType, RefObject } from 'react';
|
|
3
3
|
import * as _ai_matrx_records from '@ai-matrx/records';
|
|
4
|
-
import { PermissionLevel, Table, RecordScopeContext, EnrichCell, RecordsError, Uuid as Uuid$1, AggregateFilter, Field, RecordDocument, ReadRow, RelationDisplay, WriteConflict, DeclarableFieldKind, ParityFieldType, NewFieldDeclaration, RuleExpression, ValueEnvelope, ChecklistRequirementKind, ContextPolicy, WorkDueState, FieldSensitivity, StageRuleOnFail, SubscriptionCadence, WorkInboxKind, FieldKind, RecordFilter as RecordFilter$1, ArchiveLane, ArchivedRow, FormSummary, PortalCard, PortalPrincipal, PortalPreviewRow, DashboardBlockKind, AggregateBucket, AggregateMeasure, DashboardBlock, DashboardSummary, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, HistoryActor, FieldHistoryEntry, FieldTypeWord } from '@ai-matrx/records';
|
|
4
|
+
import { PermissionLevel, Table, RecordScopeContext, EnrichCell, RecordsError, Uuid as Uuid$1, AggregateFilter, Field, RecordDocument, ReadRow, RelationDisplay, WriteConflict, RecordsErrorCode, DeclarableFieldKind, ParityFieldType, NewFieldDeclaration, RuleExpression, ValueEnvelope, ChecklistRequirementKind, ContextPolicy, WorkDueState, FieldSensitivity, StageRuleOnFail, SubscriptionCadence, WorkInboxKind, FieldKind, RecordsResult, RecordFilter as RecordFilter$1, ArchiveLane, ArchivedRow, FormSummary, PortalCard, PortalPrincipal, PortalPreviewRow, DashboardBlockKind, AggregateBucket, AggregateMeasure, DashboardBlock, DashboardSummary, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, HistoryActor, FieldHistoryEntry, FieldTypeWord } from '@ai-matrx/records';
|
|
5
5
|
import { Uuid, RecordFilter, Field as Field$1, ReadRow as ReadRow$1 } from '@ai-matrx/records/react';
|
|
6
6
|
import { RecordsClient } from '@ai-matrx/records/core';
|
|
7
7
|
import { FieldFormatConfig } from '@ai-matrx/design-system/field-formats';
|
|
@@ -817,10 +817,22 @@ interface GridEditing {
|
|
|
817
817
|
* the "Try again" beside it are identical.
|
|
818
818
|
*/
|
|
819
819
|
setCell: (rowId: Uuid$1, key: string, value: unknown) => void;
|
|
820
|
-
/**
|
|
820
|
+
/**
|
|
821
|
+
* A VERSION CONFLICT ONLY: write the attempted value again, on top of the
|
|
822
|
+
* version the store said won. Never offered for a refusal of the VALUE — the
|
|
823
|
+
* same value would be refused the same way (VERIFIER-15 H2).
|
|
824
|
+
*/
|
|
821
825
|
retry: (rowId: Uuid$1, key: string) => void;
|
|
822
|
-
/**
|
|
826
|
+
/** A VERSION CONFLICT ONLY: drop the edit and show what the other person wrote. */
|
|
823
827
|
keepTheirs: (rowId: Uuid$1, key: string) => void;
|
|
828
|
+
/**
|
|
829
|
+
* KEEP EDITING — the refused cell opens again HOLDING WHAT WAS TYPED, so the
|
|
830
|
+
* person corrects `-3` rather than typing it from nothing (lane
|
|
831
|
+
* RECORDS-UI-FIX, VERIFIER-15 H2).
|
|
832
|
+
*/
|
|
833
|
+
keepEditing: (rowId: Uuid$1, key: string) => void;
|
|
834
|
+
/** DISCARD — throw the refused value away; the cell shows what is stored. */
|
|
835
|
+
discard: (rowId: Uuid$1, key: string) => void;
|
|
824
836
|
/** Soft delete, through the store's own door. Answers the store's refusal, or null. */
|
|
825
837
|
remove: (rowId: Uuid$1) => Promise<RecordsError | null>;
|
|
826
838
|
/** Write an empty record and open its first editable cell. */
|
|
@@ -897,10 +909,20 @@ declare function GridCell({ field, row, editing, canWrite, whyNot, format, onAsk
|
|
|
897
909
|
declare function hintIsMachineIdentity(hint: string): boolean;
|
|
898
910
|
/** The hint a PERSON should read, or null when it is written for an engineer. */
|
|
899
911
|
declare function hintForAPerson(hint: string | null | undefined): string | null;
|
|
900
|
-
declare function RefusalNotice({ error, className, actions, }: {
|
|
912
|
+
declare function RefusalNotice({ error, className, actions, onKeepEditing, onDiscard, }: {
|
|
901
913
|
error: RecordsError;
|
|
902
914
|
className?: string | undefined;
|
|
903
915
|
actions?: ReactNode | undefined;
|
|
916
|
+
/**
|
|
917
|
+
* KEEP EDITING / DISCARD (lane REFUSAL-SWEEP, 2026-09-23). Pass these ONLY where
|
|
918
|
+
* an editor is open holding what the person typed and the refusal is about that
|
|
919
|
+
* text: the notice then owns the two doors out, so the notice — never a clock —
|
|
920
|
+
* decides how long the typed text is kept. Keep editing hands the person back
|
|
921
|
+
* to their text; Discard throws it away and puts back what was there. A surface
|
|
922
|
+
* with nothing typed to keep passes neither and gets no buttons.
|
|
923
|
+
*/
|
|
924
|
+
onKeepEditing?: (() => void) | undefined;
|
|
925
|
+
onDiscard?: (() => void) | undefined;
|
|
904
926
|
}): react.JSX.Element;
|
|
905
927
|
/** A small inline one, for a cell or a field where a block would break the layout. */
|
|
906
928
|
declare function RefusalLine({ error, className }: {
|
|
@@ -908,6 +930,34 @@ declare function RefusalLine({ error, className }: {
|
|
|
908
930
|
className?: string | undefined;
|
|
909
931
|
}): react.JSX.Element;
|
|
910
932
|
|
|
933
|
+
/**
|
|
934
|
+
* A refusal in this package's own words.
|
|
935
|
+
*
|
|
936
|
+
* @param code what KIND of refusal — picks the notice's title and its fallback remedy.
|
|
937
|
+
* @param sentence what happened, for a person.
|
|
938
|
+
* @param remedy what to do now, when this call site knows better than the code's default.
|
|
939
|
+
* @param diagnostic an engineer's note (a thrown message, a status) — rendered out of sight.
|
|
940
|
+
*/
|
|
941
|
+
declare function refusal(code: RecordsErrorCode, sentence: string, remedy?: string | null, diagnostic?: string | null): RecordsError;
|
|
942
|
+
/**
|
|
943
|
+
* A refusal made from something THROWN in the browser. The thrown text is an
|
|
944
|
+
* engineer's (a parser's "Unexpected token } in JSON at position 14", a
|
|
945
|
+
* library's stack) and goes out of sight; the person reads `sentence`.
|
|
946
|
+
*/
|
|
947
|
+
declare function refusalFromThrown(thrown: unknown, sentence: string, remedy?: string | null, code?: RecordsErrorCode): RecordsError;
|
|
948
|
+
/**
|
|
949
|
+
* The store's refusal when there is one, otherwise this package's own sentence —
|
|
950
|
+
* for the call sites whose answer MAY carry an error (`res.error?.message ?? "…"`
|
|
951
|
+
* was the old shape, and it printed the store's message raw).
|
|
952
|
+
*/
|
|
953
|
+
declare function refusalOr(error: RecordsError | null | undefined, code: RecordsErrorCode, sentence: string): RecordsError;
|
|
954
|
+
/**
|
|
955
|
+
* Whatever a host callback threw, as a refusal: the store's own `RecordsError`
|
|
956
|
+
* when that is what arrived (it is drawn with its own words and remedy), and
|
|
957
|
+
* otherwise `refusalFromThrown` — the thrown text out of sight, `sentence` in view.
|
|
958
|
+
*/
|
|
959
|
+
declare function asRefusal(thrown: unknown, sentence: string, remedy?: string | null, code?: RecordsErrorCode): RecordsError;
|
|
960
|
+
|
|
911
961
|
/**
|
|
912
962
|
* HOW A TABLE LOOKS — colors, formats and the frozen column.
|
|
913
963
|
*
|
|
@@ -1898,6 +1948,22 @@ declare const LAYOUT_NO_FIELD: Record<ViewLayout, string>;
|
|
|
1898
1948
|
declare function viewDocument(spec: SavedViewSpec): Record<string, unknown>;
|
|
1899
1949
|
/** One stored record back into the spec a screen and an agent both read. */
|
|
1900
1950
|
declare function viewFromRecord(row: ReadRow): SavedView;
|
|
1951
|
+
/**
|
|
1952
|
+
* WRITE A CHANGE ONTO A SAVED VIEW, AND KEEP IT (lane RECORDS-UI-FIX, VERIFIER-15 M4).
|
|
1953
|
+
*
|
|
1954
|
+
* The version a screen holds for a view is read from the view's history, and the
|
|
1955
|
+
* history can be SHORT of the record — measured on the dev clone 2026-09-23: 68 live
|
|
1956
|
+
* records whose version is ahead of their newest history row, among them the
|
|
1957
|
+
* Birchwood quote board's view (record at 4, history stopping at 3). Every layout
|
|
1958
|
+
* press carried 3 and was refused `stale_write`, forever, and nothing said so.
|
|
1959
|
+
*
|
|
1960
|
+
* So a conflict is answered with the version the refusal itself names as the winner,
|
|
1961
|
+
* and the change is sent once more on it. A saved view is a person's own arrangement
|
|
1962
|
+
* of a table: their latest press is the one that should stand, the way Airtable and
|
|
1963
|
+
* Notion keep the last view change. Anything still refused is handed back, for the
|
|
1964
|
+
* page to say through the one notice.
|
|
1965
|
+
*/
|
|
1966
|
+
declare function saveViewPatch(client: Pick<RecordsClient, "recordUpdate">, viewId: Uuid$1, document: Record<string, unknown>, expectedVersion: number | null): Promise<RecordsResult<number>>;
|
|
1901
1967
|
/**
|
|
1902
1968
|
* A PARTIAL change to a saved view, as the patch the store takes. Only the keys
|
|
1903
1969
|
* the caller actually changed are written — a full document would re-write a
|
|
@@ -2284,6 +2350,8 @@ interface PortalBuilderProps {
|
|
|
2284
2350
|
}
|
|
2285
2351
|
declare function PortalBuilder({ tableId, portalId, onSaved, onClose, className }: PortalBuilderProps): react.JSX.Element;
|
|
2286
2352
|
|
|
2353
|
+
/** The sentence when a link named a portal this table is not in. */
|
|
2354
|
+
declare const PORTAL_NOT_HERE_LINE: string;
|
|
2287
2355
|
interface PortalsPanelProps {
|
|
2288
2356
|
/**
|
|
2289
2357
|
* The Table whose page this rail is on. THE RAIL IS SCOPED TO IT: it lists
|
|
@@ -2307,6 +2375,12 @@ interface PortalsPanelProps {
|
|
|
2307
2375
|
* mount that is not standing on a table.
|
|
2308
2376
|
*/
|
|
2309
2377
|
tableId?: Uuid | undefined;
|
|
2378
|
+
/**
|
|
2379
|
+
* THE PORTAL A LINK NAMED (`?rail=portals&item=<portal>`, lane HUB-FIX). Its
|
|
2380
|
+
* card opens on arrival and is scrolled to. A portal this table is not in is
|
|
2381
|
+
* said out loud, never swapped for another portal.
|
|
2382
|
+
*/
|
|
2383
|
+
activePortalId?: Uuid | null | undefined;
|
|
2310
2384
|
className?: string | undefined;
|
|
2311
2385
|
}
|
|
2312
2386
|
/** What a door answered, for a view that never holds a client of its own. */
|
|
@@ -2336,7 +2410,7 @@ declare function revokeConsequence(person: PortalPrincipal, portalTitle: string)
|
|
|
2336
2410
|
* the screen can say whose eyes these are and be right.
|
|
2337
2411
|
*/
|
|
2338
2412
|
declare function previewLine(person: PortalPrincipal): string;
|
|
2339
|
-
declare function PortalsPanel({ tableId, className }: PortalsPanelProps): react.JSX.Element;
|
|
2413
|
+
declare function PortalsPanel({ tableId, activePortalId, className }: PortalsPanelProps): react.JSX.Element;
|
|
2340
2414
|
interface PortalCardViewProps {
|
|
2341
2415
|
/** Exactly what `custom.portal_card` answered. */
|
|
2342
2416
|
card: PortalCard;
|
|
@@ -2391,9 +2465,18 @@ declare function DigestScheduler({ tableId, savedViewId, subjectName, filters, o
|
|
|
2391
2465
|
|
|
2392
2466
|
interface SubscriptionsPanelProps {
|
|
2393
2467
|
tableId: Uuid;
|
|
2468
|
+
/**
|
|
2469
|
+
* THE DIGEST A LINK NAMED (`?rail=notifications&item=<rule>`, lane HUB-FIX).
|
|
2470
|
+
* The rule is marked and scrolled to. This rail lists the subscriptions of the
|
|
2471
|
+
* person signed in, so a rule that is somebody else's is said out loud as
|
|
2472
|
+
* exactly that — never replaced by one of theirs.
|
|
2473
|
+
*/
|
|
2474
|
+
activeRuleId?: Uuid | null | undefined;
|
|
2394
2475
|
className?: string | undefined;
|
|
2395
2476
|
}
|
|
2396
|
-
|
|
2477
|
+
/** The sentence when a link named a digest that is not in this person's list for this table. */
|
|
2478
|
+
declare const RULE_NOT_HERE_LINE: string;
|
|
2479
|
+
declare function SubscriptionsPanel({ tableId, activeRuleId, className }: SubscriptionsPanelProps): react.JSX.Element;
|
|
2397
2480
|
|
|
2398
2481
|
/** What a person is asking to have made, in the store's own word for it. */
|
|
2399
2482
|
type BuildableKind = "form" | "booking" | "portal" | "digest";
|
|
@@ -2683,9 +2766,18 @@ declare function DashboardCanvas({ tableId, activeDashboardId, filter, className
|
|
|
2683
2766
|
|
|
2684
2767
|
interface FormsPanelProps {
|
|
2685
2768
|
tableId: Uuid;
|
|
2769
|
+
/**
|
|
2770
|
+
* THE FORM A LINK NAMED (`?rail=forms&item=<form>`, lane HUB-FIX). The rail
|
|
2771
|
+
* opens ON it: marked and scrolled to, and — for somebody who may build — its
|
|
2772
|
+
* builder open on that form. An id this table has no form by is said out
|
|
2773
|
+
* loud, never swapped for the first form in the list.
|
|
2774
|
+
*/
|
|
2775
|
+
activeFormId?: Uuid | null | undefined;
|
|
2686
2776
|
className?: string | undefined;
|
|
2687
2777
|
}
|
|
2688
|
-
|
|
2778
|
+
/** The sentence when a link named a form this table does not have. */
|
|
2779
|
+
declare const FORM_NOT_HERE_LINE: string;
|
|
2780
|
+
declare function FormsPanel({ tableId, activeFormId, className }: FormsPanelProps): react.JSX.Element;
|
|
2689
2781
|
|
|
2690
2782
|
/** What the public arm's `onSubmit` answers. A refusal carries the door's words. */
|
|
2691
2783
|
type FormSubmitOutcome = {
|
|
@@ -2695,6 +2787,12 @@ type FormSubmitOutcome = {
|
|
|
2695
2787
|
} | {
|
|
2696
2788
|
ok: false;
|
|
2697
2789
|
message: string;
|
|
2790
|
+
/**
|
|
2791
|
+
* The store's own refusal, when the arm has one. Drawn by `RefusalNotice`, so
|
|
2792
|
+
* its machine identity is excised and its remedy is shown; an arm that only
|
|
2793
|
+
* has `message` still gets a notice built from it (lane REFUSAL-SWEEP).
|
|
2794
|
+
*/
|
|
2795
|
+
error?: RecordsError | undefined;
|
|
2698
2796
|
};
|
|
2699
2797
|
interface FormRunnerProps {
|
|
2700
2798
|
/** The complete spec. An agent wrote it; `FormBuilder` saved it; this runs it. */
|
|
@@ -3020,8 +3118,43 @@ declare const TABLE_LANES: readonly TableLane[];
|
|
|
3020
3118
|
declare const LANE_TITLE: Record<TableLane, string>;
|
|
3021
3119
|
/** What fills an empty lane. A heading with nothing under it must still teach. */
|
|
3022
3120
|
declare const LANE_EMPTY: Record<TableLane, string>;
|
|
3121
|
+
/**
|
|
3122
|
+
* WHETHER THE STORE ITSELF KEEPS THIS TABLE FOR THE APP — a choice list made per
|
|
3123
|
+
* choice field, for one. The Table record's document carries `kept_by_the_app:
|
|
3124
|
+
* true`, and `tableList()` spreads the whole document onto the Table; the
|
|
3125
|
+
* `Table` interface does not declare it yet, so it is read through this one
|
|
3126
|
+
* narrow cast.
|
|
3127
|
+
*
|
|
3128
|
+
* 🚨 MEASURED ON RINCON PLUMBING CO (VERIFIER-15): 13 "Crew choices" and 14
|
|
3129
|
+
* "Status choices" tables sat under My organization here, beside Jobs and
|
|
3130
|
+
* Invoices, while the organization hub above them already counted them as the
|
|
3131
|
+
* app's. Two lists on one page disagreed about the same 27 tables. They go to
|
|
3132
|
+
* the app's lane, with the saved views.
|
|
3133
|
+
*/
|
|
3134
|
+
declare function keptByTheApp(table: Table): boolean;
|
|
3023
3135
|
/** Which lane one Table belongs to, from the record's own columns. */
|
|
3024
3136
|
declare function laneFor(table: Table): TableLane;
|
|
3137
|
+
/**
|
|
3138
|
+
* THE FOUR VISIBILITY LANES — who can see a thing: me, my organization, the
|
|
3139
|
+
* signed-in community, the whole world. (Arman, 2026-09-15: mine · my
|
|
3140
|
+
* organization · community · world; `common-docs/systems/platform/access/DECISIONS.md`.)
|
|
3141
|
+
*
|
|
3142
|
+
* They are NOT the sections of the table list above (`TABLE_LANES`), which also
|
|
3143
|
+
* separate the platform's own tables and the app's bookkeeping — those are about
|
|
3144
|
+
* WHO MADE a table, and a person filtering "what is visible to whom" is asking a
|
|
3145
|
+
* different question. A table the store keeps for itself, or a kernel table, has
|
|
3146
|
+
* no visibility a person chose, so `visibilityLaneFor` answers `null` and a
|
|
3147
|
+
* filter over these four leaves it out rather than inventing a lane for it.
|
|
3148
|
+
*
|
|
3149
|
+
* From the record's own `visibility`, the store's closed four:
|
|
3150
|
+
* personal → Mine · internal → My organization · link → Community (reachable
|
|
3151
|
+
* by whoever holds its link, not listed for the world) · public → World.
|
|
3152
|
+
*/
|
|
3153
|
+
type VisibilityLane = "mine" | "organization" | "community" | "world";
|
|
3154
|
+
declare const VISIBILITY_LANES: readonly VisibilityLane[];
|
|
3155
|
+
declare const VISIBILITY_LANE_TITLE: Record<VisibilityLane, string>;
|
|
3156
|
+
/** Which visibility lane one Table is in, or `null` when no person chose one for it. */
|
|
3157
|
+
declare function visibilityLaneFor(table: Table): VisibilityLane | null;
|
|
3025
3158
|
interface TablesHomeProps {
|
|
3026
3159
|
/** Where a table opens. Absent and the card is a plain row with no pretend link. */
|
|
3027
3160
|
/**
|
|
@@ -3140,6 +3273,31 @@ interface TablePageProps {
|
|
|
3140
3273
|
* `activeGroupField`, and is never written onto the saved view.
|
|
3141
3274
|
*/
|
|
3142
3275
|
filter?: RecordFilter$1 | null | undefined;
|
|
3276
|
+
/**
|
|
3277
|
+
* WHICH RAIL THE ADDRESS OPENS — `forms`, `bookings`, `checklists`,
|
|
3278
|
+
* `notifications` (also `digests`), `portals`, `settings`, `import`, `inbox`
|
|
3279
|
+
* or `share`, exactly as the host read it out of `?rail=`.
|
|
3280
|
+
*
|
|
3281
|
+
* 🚨 THE DEAD LINK THIS CLOSES (lane HUB-FIX, 2026-09-23; VERIFIER-14 item 2).
|
|
3282
|
+
* The organization hub lists every form, digest, portal and outside share of
|
|
3283
|
+
* an organization, and every one of those rows opened `/data-v2/<table>` —
|
|
3284
|
+
* the table's GRID — because nothing in this page could be addressed below
|
|
3285
|
+
* the layout: the rails were `useState` with no prop and no URL spelling. A
|
|
3286
|
+
* person who clicked "Spring drain-cleaning intake" landed on 400 rows of jobs
|
|
3287
|
+
* and had to find the Forms button, then the form. Same shape as `?view=`: a
|
|
3288
|
+
* word this page does not know is said out loud (`unknownRailLine`), never a
|
|
3289
|
+
* silent grid.
|
|
3290
|
+
*
|
|
3291
|
+
* Absent, the page opens exactly as it did.
|
|
3292
|
+
*/
|
|
3293
|
+
activeRail?: string | null | undefined;
|
|
3294
|
+
/**
|
|
3295
|
+
* WHICH THING INSIDE THAT RAIL — the form, the portal or the digest rule the
|
|
3296
|
+
* link named. The rail opens ON it: the form's builder, the portal's card
|
|
3297
|
+
* opened, the rule marked and scrolled to. An id the rail does not hold is
|
|
3298
|
+
* said out loud by the rail, never replaced by its first row.
|
|
3299
|
+
*/
|
|
3300
|
+
activeItemId?: Uuid$1 | null | undefined;
|
|
3143
3301
|
className?: string | undefined;
|
|
3144
3302
|
}
|
|
3145
3303
|
/**
|
|
@@ -3253,10 +3411,18 @@ declare function surfaceChosen(current: Surface, asking: SurfacePress): boolean;
|
|
|
3253
3411
|
* WHAT THE PAGE OPENS SHOWING — one pure function, so the dead link can be shown failing.
|
|
3254
3412
|
* See `TablePageProps.activeRecordId` for the defect it closes.
|
|
3255
3413
|
*/
|
|
3256
|
-
declare function openingRail(activeRecordId: Uuid$1 | null | undefined): {
|
|
3257
|
-
rail: "record" | "none"
|
|
3414
|
+
declare function openingRail(activeRecordId: Uuid$1 | null | undefined, activeRail?: string | null | undefined): {
|
|
3415
|
+
rail: "record" | "none" | Exclude<LinkRail, "share">;
|
|
3258
3416
|
record: Uuid$1 | null;
|
|
3259
3417
|
};
|
|
3418
|
+
/** The rails a link may open, plus `share`, which opens the share dialog over the page. */
|
|
3419
|
+
type LinkRail = "forms" | "bookings" | "checklists" | "notifications" | "portals" | "settings" | "import" | "inbox" | "share";
|
|
3420
|
+
/** What a `?rail=` value means, or `null` when it means nothing here. */
|
|
3421
|
+
declare function railFromParam(raw: string | null | undefined): LinkRail | null;
|
|
3422
|
+
/** The sentence a link that named a rail nobody has says. Never silent. */
|
|
3423
|
+
declare function unknownRailLine(raw: string): string;
|
|
3424
|
+
/** The sentence when the link asked for the share dialog and this person may not share. */
|
|
3425
|
+
declare const SHARE_NOT_YOURS_LINE: string;
|
|
3260
3426
|
/**
|
|
3261
3427
|
* WHICH VIEW A LINK OPENS — one pure function, so the dead link can be shown
|
|
3262
3428
|
* failing. See `TablePageProps.activeView` for the defect it closes.
|
|
@@ -3278,7 +3444,7 @@ declare function openingView(activeView: string | null | undefined, activeDashbo
|
|
|
3278
3444
|
layout: ViewLayout | null;
|
|
3279
3445
|
unknown: string | null;
|
|
3280
3446
|
};
|
|
3281
|
-
declare function TablePage({ tableId, pageSize, seedViews, onLeave, leaveLabel, activeDashboardId, activeRecordId, activeView, onViewChanged, activeGroupField, cameFrom, filter, className, }: TablePageProps): react.JSX.Element;
|
|
3447
|
+
declare function TablePage({ tableId, pageSize, seedViews, onLeave, leaveLabel, activeDashboardId, activeRecordId, activeView, onViewChanged, activeGroupField, cameFrom, filter, activeRail, activeItemId, className, }: TablePageProps): react.JSX.Element;
|
|
3282
3448
|
|
|
3283
3449
|
/** What the roster can tell us about a user id. `null` when it cannot. */
|
|
3284
3450
|
type ResolveName = (userId: Uuid$1) => string | null;
|
|
@@ -3432,6 +3598,12 @@ interface ShareControlProps {
|
|
|
3432
3598
|
* assumption, which is the whole of this lane.
|
|
3433
3599
|
*/
|
|
3434
3600
|
may?: boolean | undefined;
|
|
3601
|
+
/**
|
|
3602
|
+
* OPEN THE DIALOG ON ARRIVAL — a link (`?rail=share`) named this share, so the
|
|
3603
|
+
* page opens on it rather than making the person find the button. It still
|
|
3604
|
+
* opens only for somebody who may share; the caller says why when not.
|
|
3605
|
+
*/
|
|
3606
|
+
initiallyOpen?: boolean | undefined;
|
|
3435
3607
|
size?: "sm" | "default" | undefined;
|
|
3436
3608
|
variant?: "ghost" | "outline" | "default" | undefined;
|
|
3437
3609
|
className?: string | undefined;
|
|
@@ -3440,7 +3612,7 @@ interface ShareControlProps {
|
|
|
3440
3612
|
declare function useCanShare(): boolean;
|
|
3441
3613
|
/** Why there is no Share button here, for anything that asks. */
|
|
3442
3614
|
declare function shareUnavailableReason(): string;
|
|
3443
|
-
declare function ShareControl({ kind, organizationId, subjectId, name, may, size, variant, className, }: ShareControlProps): ReactNode;
|
|
3615
|
+
declare function ShareControl({ kind, organizationId, subjectId, name, may, initiallyOpen, size, variant, className, }: ShareControlProps): ReactNode;
|
|
3444
3616
|
|
|
3445
3617
|
interface PipelineBoardProps {
|
|
3446
3618
|
tableId: Uuid;
|
|
@@ -3456,4 +3628,4 @@ interface PipelineBoardProps {
|
|
|
3456
3628
|
}
|
|
3457
3629
|
declare function PipelineBoard({ tableId, rows, measure, onMeasureChange, onOpenRecord, onMoved, className, }: PipelineBoardProps): react.JSX.Element;
|
|
3458
3630
|
|
|
3459
|
-
export { ABSENCE_WORD_LABEL, ABSENCE_WORD_VALUES, ACTION_KINDS, ARCHIVED_NEVER_DESTROYED, ARCHIVE_MEANS, type AbsenceWord, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, ArchivedDisclosure, type ArchivedDisclosureProps, ArchivedPortals, type ArchivedPortalsProps, ArchivedView, type ArchivedViewProps, BOOKING_PAGE_STATE_LABEL, BOOKING_PAGE_STATE_VALUES, BookingBuilder, type BookingBuilderProps, type BookingPageState, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CHECKLIST_REQUIREMENT_KINDS, CHECKLIST_REQUIREMENT_LABEL, CONDITION_OPS, CONTEXT_POLICY_LABEL, type Capability, type CaptureMode, type CaptureQueuePort, CaptureRun, type CaptureRunProps, CaptureSheet, type CaptureSheetProps, type CellAddress, type CellRefusal, type CellState, ChartBlock, type ChartBlockProps, type ChartConfig, ChartFrame, type ChartKind, ChartLegendContent, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, CommentThread, type CommentThreadProps, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DUE_STATE_LABEL, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DigestScheduler, type DigestSchedulerProps, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, ENGINEER_TEXT, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, ExportMenu, type ExportMenuProps, FIELD_RULE_KIND_LABEL, FIELD_RULE_KIND_VALUES, FIELD_SENSITIVITY_LABEL, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FORMULA_OP_JOINS, FORMULA_OP_LABEL, FORMULA_OP_VALUES, FORM_FLOWS, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldRuleKindValue, type FieldTypeChoice, FilePicker, type FilePickerProps, FormBuilder, type FormBuilderProps, type FormFlow, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, type FormulaOp, Grid, GridCell, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, HistoryPanel, type HistoryPanelProps, IN_MEMORY_QUEUE_REASON, ImportWizard, type ImportWizardProps, KERNEL_REASON, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LAYOUT_NEEDS, LAYOUT_NO_FIELD, LEVEL_WORD, type LabelLookup, MACHINE_IDENTITY, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, type MainView, MyChecklistSteps, NEEDS_A_SENTENCE, NOT_ANSWERED_YET, NOT_DRAWN_HERE, NO_AGENT_PORT, NO_CHAT_REASON, NO_COLUMNS_WHY, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_RULES_YET, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewFieldSpec, type NewTableSpec, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, PROPOSED_CHANGE_ACT_LABEL, PROPOSED_CHANGE_ACT_VALUES, type PageView, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, type PickableFieldType, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, type ProposedChangeAct, ProvenanceBadge, PublicViewPage, type PublicViewPageProps, ROLLUP_AGG_LABEL, ROLLUP_AGG_VALUES, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, RecordValue, RecordsMount, type RecordsMountProps, type RecordsUiHost, RecordsUiProvider, ReferenceBuilder, type ReferenceBuilderProps, type ReferenceChoice, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, type ResolveName, type RollupAgg, SAVED_VIEWS_UNAVAILABLE, SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS, SERIES_COLORS, SOMEBODY, STAGE_RULE_ON_FAIL_LABEL, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, SUBSCRIPTION_CADENCES, SUBSCRIPTION_CADENCE_LABEL, SUBSCRIPTION_CHANNEL_LABEL, SUBSCRIPTION_CHANNEL_VALUES, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StageRulesSection, type StageRulesSectionProps, StepRow, type SubscriptionChannel, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NOT_REACHABLE, THE_SYSTEM, type TableLane, TablePage, type TablePageProps, type TableRights, TableSettings, type TableSettingsProps, TablesHome, type TablesHomeProps, type TrackedVersion, type UseSystemTableState, VIEW_LAYOUTS, VIEW_NOT_SAVED_YET, VIEW_TABLE, ViewBar, type ViewBarProps, type ViewLayout, type ViewSort, ViewSwitcher, type ViewSwitcherProps, WITHHELD_RECORD_LABEL, WORK_DUE_STATES, WORK_INBOX_KINDS, WORK_INBOX_KIND_LABEL, type WhatYouMayDo, type WhoChanged, WhoChangedSource, actorBadge, actorWords, addFields, archivedRowLine, askableFields, blockFromSpec, bodyForReading, bodyFromKeys, cameFromLine, cellState, chooseSurface, colorFromTheValue, columnForField, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, currencyCodeFor, dashboardDeclareArgs, dashboardFromSummary, declareTable, editorKindFor, ensureSystemTable, envelopeFor, fieldDeclarationFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, formDeclareArgs, formFromSummary, formPresentation, formatForField, groupLabel, hintForAPerson, hintIsMachineIdentity, humanize, idsOf, isEngineerText, isId, isMachineIdentity, isParityFieldType, isPlainFieldType, isRelationFieldType, isSignatureField, keyFor, kindsWithNoChoice, laneFor, lastChangeSentence, looksLikeId, machineIdentityIn, mayNotRestoreLine, memberName, nextInWords, openingRail, openingView, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, previewWords, publiclyAnswerable, recordName, recordNameIn, recordsDataSource, refusalForAPerson, refusalLineForAPerson, renderValue, revokeConsequence, rowName, rowNameIn, scalarText, shareUnavailableReason, specFromBlock, storeDecidesRights, submissionStamp, surfaceChosen, tableName, tableRightsAt, tokenFor, unknownViewLine, useCanShare, useEmbedHandshake, useEnrichCells, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useViewRecords, useWhoChanged, viewDocument, viewFromRecord, viewPatchDocument, whatIsMissing, whatYouMayDo, whatYouMayDoWithTable, whenWords, whyNotAskable };
|
|
3631
|
+
export { ABSENCE_WORD_LABEL, ABSENCE_WORD_VALUES, ACTION_KINDS, ARCHIVED_NEVER_DESTROYED, ARCHIVE_MEANS, type AbsenceWord, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, ArchivedDisclosure, type ArchivedDisclosureProps, ArchivedPortals, type ArchivedPortalsProps, ArchivedView, type ArchivedViewProps, BOOKING_PAGE_STATE_LABEL, BOOKING_PAGE_STATE_VALUES, BookingBuilder, type BookingBuilderProps, type BookingPageState, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CHECKLIST_REQUIREMENT_KINDS, CHECKLIST_REQUIREMENT_LABEL, CONDITION_OPS, CONTEXT_POLICY_LABEL, type Capability, type CaptureMode, type CaptureQueuePort, CaptureRun, type CaptureRunProps, CaptureSheet, type CaptureSheetProps, type CellAddress, type CellRefusal, type CellState, ChartBlock, type ChartBlockProps, type ChartConfig, ChartFrame, type ChartKind, ChartLegendContent, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, CommentThread, type CommentThreadProps, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DUE_STATE_LABEL, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DigestScheduler, type DigestSchedulerProps, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, ENGINEER_TEXT, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, ExportMenu, type ExportMenuProps, FIELD_RULE_KIND_LABEL, FIELD_RULE_KIND_VALUES, FIELD_SENSITIVITY_LABEL, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FORMULA_OP_JOINS, FORMULA_OP_LABEL, FORMULA_OP_VALUES, FORM_FLOWS, FORM_NOT_HERE_LINE, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldRuleKindValue, type FieldTypeChoice, FilePicker, type FilePickerProps, FormBuilder, type FormBuilderProps, type FormFlow, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, type FormulaOp, Grid, GridCell, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, HistoryPanel, type HistoryPanelProps, IN_MEMORY_QUEUE_REASON, ImportWizard, type ImportWizardProps, KERNEL_REASON, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LAYOUT_NEEDS, LAYOUT_NO_FIELD, LEVEL_WORD, type LabelLookup, type LinkRail, MACHINE_IDENTITY, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, type MainView, MyChecklistSteps, NEEDS_A_SENTENCE, NOT_ANSWERED_YET, NOT_DRAWN_HERE, NO_AGENT_PORT, NO_CHAT_REASON, NO_COLUMNS_WHY, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_RULES_YET, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewFieldSpec, type NewTableSpec, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, PORTAL_NOT_HERE_LINE, PROPOSED_CHANGE_ACT_LABEL, PROPOSED_CHANGE_ACT_VALUES, type PageView, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, type PickableFieldType, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, type ProposedChangeAct, ProvenanceBadge, PublicViewPage, type PublicViewPageProps, ROLLUP_AGG_LABEL, ROLLUP_AGG_VALUES, RULE_NOT_HERE_LINE, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, RecordValue, RecordsMount, type RecordsMountProps, type RecordsUiHost, RecordsUiProvider, ReferenceBuilder, type ReferenceBuilderProps, type ReferenceChoice, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, type ResolveName, type RollupAgg, SAVED_VIEWS_UNAVAILABLE, SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS, SERIES_COLORS, SHARE_NOT_YOURS_LINE, SOMEBODY, STAGE_RULE_ON_FAIL_LABEL, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, SUBSCRIPTION_CADENCES, SUBSCRIPTION_CADENCE_LABEL, SUBSCRIPTION_CHANNEL_LABEL, SUBSCRIPTION_CHANNEL_VALUES, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StageRulesSection, type StageRulesSectionProps, StepRow, type SubscriptionChannel, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NOT_REACHABLE, THE_SYSTEM, type TableLane, TablePage, type TablePageProps, type TableRights, TableSettings, type TableSettingsProps, TablesHome, type TablesHomeProps, type TrackedVersion, type UseSystemTableState, VIEW_LAYOUTS, VIEW_NOT_SAVED_YET, VIEW_TABLE, VISIBILITY_LANES, VISIBILITY_LANE_TITLE, ViewBar, type ViewBarProps, type ViewLayout, type ViewSort, ViewSwitcher, type ViewSwitcherProps, type VisibilityLane, WITHHELD_RECORD_LABEL, WORK_DUE_STATES, WORK_INBOX_KINDS, WORK_INBOX_KIND_LABEL, type WhatYouMayDo, type WhoChanged, WhoChangedSource, actorBadge, actorWords, addFields, archivedRowLine, asRefusal, askableFields, blockFromSpec, bodyForReading, bodyFromKeys, cameFromLine, cellState, chooseSurface, colorFromTheValue, columnForField, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, currencyCodeFor, dashboardDeclareArgs, dashboardFromSummary, declareTable, editorKindFor, ensureSystemTable, envelopeFor, fieldDeclarationFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, formDeclareArgs, formFromSummary, formPresentation, formatForField, groupLabel, hintForAPerson, hintIsMachineIdentity, humanize, idsOf, isEngineerText, isId, isMachineIdentity, isParityFieldType, isPlainFieldType, isRelationFieldType, isSignatureField, keptByTheApp, keyFor, kindsWithNoChoice, laneFor, lastChangeSentence, looksLikeId, machineIdentityIn, mayNotRestoreLine, memberName, nextInWords, openingRail, openingView, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, previewWords, publiclyAnswerable, railFromParam, recordName, recordNameIn, recordsDataSource, refusal, refusalForAPerson, refusalFromThrown, refusalLineForAPerson, refusalOr, renderValue, revokeConsequence, rowName, rowNameIn, saveViewPatch, scalarText, shareUnavailableReason, specFromBlock, storeDecidesRights, submissionStamp, surfaceChosen, tableName, tableRightsAt, tokenFor, unknownRailLine, unknownViewLine, useCanShare, useEmbedHandshake, useEnrichCells, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useViewRecords, useWhoChanged, viewDocument, viewFromRecord, viewPatchDocument, visibilityLaneFor, whatIsMissing, whatYouMayDo, whatYouMayDoWithTable, whenWords, whyNotAskable };
|