@ai-matrx/records-ui 0.103.7 → 0.103.10
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 +6 -0
- package/dist/index.cjs +13880 -13312
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +392 -299
- package/dist/index.d.ts +392 -299
- package/dist/index.js +13076 -12508
- package/dist/index.js.map +1 -1
- package/dist/pickers.cjs.map +1 -1
- package/dist/pickers.js.map +1 -1
- package/package.json +5 -5
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { ReactNode, KeyboardEvent, ReactElement, ComponentType, RefObject, SVGAttributes } from 'react';
|
|
3
3
|
import * as _ai_matrx_records from '@ai-matrx/records';
|
|
4
|
-
import {
|
|
4
|
+
import { Uuid, RowAction, Field, RowActionStep, RecordScopeContext, EnrichCell, RecordsError, TableDecorations, RecordDocument, Table, ReadRow, StoreFilter, RecordRead, PermissionLevel, AggregateFilter, RelationDisplay, WriteConflict, RecordsErrorCode, RecordFilter, RuleExpression, RecordsResult, SavedViewRow, ImportRun, DeclarableFieldKind, NewerFieldKind, ParityFieldType, NewFieldDeclaration, ChoiceRehome, FieldOptionEdit, StoredRecord, ChoiceNudge, HiddenFieldNotice, ValueEnvelope, ChecklistRequirementKind, ContextPolicy, WorkDueState, FieldSensitivity, StageRuleOnFail, SubscriptionCadence, WorkApprovalState, WorkInboxKind, FieldKind, ArchiveLane, ArchivedRow, WorkInboxView, WorkInboxItem, PortalAccent, FormSummary, PortalCard, PortalPrincipal, PortalPreviewRow, PublicPicture, PortalStyle, MySubscription, DashboardBlockKind, AggregateBucket, AggregateMeasure, AggregateCompare, DashboardTarget, DashboardBlock, DashboardSummary, AggregateGroupValue, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, TableDuplicated, HistoryActor, FieldHistoryEntry, DrillDefinition, DrillSource, TableDuplicateProgress, TableArchiveProgress } from '@ai-matrx/records';
|
|
5
5
|
import { ReversibleAnnouncement } from '@ai-matrx/kit/reversible';
|
|
6
6
|
import { W as WhatYouMayDo, T as TableActionHost, O as ObjectAction, a as ObjectActionIcon } from './objectActions-XkhxU-DP.js';
|
|
7
7
|
export { A as ACTION_CHECKING_ACCESS_REASON, b as ACTION_NOT_HERE_REASON, c as ACTION_NO_ACCESS_REASON, d as ACTION_PLATFORM_TABLE_REASON, B as BuiltOnDestination, C as Capability, D as DEFAULT_ACTION_ORIGIN, K as KERNEL_REASON, L as LEVEL_WORD, N as NOT_ANSWERED_YET, e as OBJECT_ACTION_GROUPS, f as ObjectActionDropdownEntry, g as ObjectActionGroup, h as ObjectActionGroupDef, i as ObjectActionSection, S as STANDARD_VERBS, j as STRIP_FEATURE_ROWS, k as StandardVerbId, l as StripAndRows, m as TableActionSubject, n as TableActionsInput, o as dropdownActionIds, p as dropdownActions, q as groupObjectActions, r as levelNeededFor, s as rightsReason, t as tableActions, u as tableLink, v as toDropdownEntries, w as toStripAndRows, x as whatYouMayDo, y as whatYouMayDoWithTable, z as withExtensions } from './objectActions-XkhxU-DP.js';
|
|
8
|
-
import { Uuid, Field as Field$1, ReadRow as ReadRow$1, StoreFilter as StoreFilter$1, useRecordsClient
|
|
8
|
+
import { Uuid as Uuid$1, Table as Table$1, Field as Field$1, ReadRow as ReadRow$1, StoreFilter as StoreFilter$1, useRecordsClient } from '@ai-matrx/records/react';
|
|
9
9
|
import { TableStyle, GroupAggregateSpec, GroupOrder, ChoiceColorLookup, MatrxTableCardProps, StyleColor, MatrxDataTableDrillConfig, MatrxColumnDef as MatrxColumnDef$1, MatrxDrillDimension, MatrxDrillMeasure, MatrxDrillFilter, MatrxDrillQuestion, MatrxDrillAnswers } from '@ai-matrx/design-system/data-table';
|
|
10
10
|
import { FieldFormatConfig } from '@ai-matrx/design-system/field-formats';
|
|
11
11
|
import { RecordsClient, ParsedImport, NewFieldSpec } from '@ai-matrx/records/core';
|
|
@@ -19,6 +19,37 @@ import { TemplateSpec } from '@ai-matrx/records/templates';
|
|
|
19
19
|
import { TemplatePreview as TemplatePreview$1 } from '@ai-matrx/records/memory';
|
|
20
20
|
import { MatrxColumnDef } from '@ai-matrx/design-system/data-table/types';
|
|
21
21
|
|
|
22
|
+
/** What the settings panel can see right now, in the words the agent reads. */
|
|
23
|
+
interface TableSettingsSnapshot {
|
|
24
|
+
table_id: Uuid;
|
|
25
|
+
/** True when the description or an open row action holds edits not saved yet. */
|
|
26
|
+
has_unsaved_changes: boolean;
|
|
27
|
+
table_details_draft: {
|
|
28
|
+
table_name: string;
|
|
29
|
+
description: string;
|
|
30
|
+
row_label: string | null;
|
|
31
|
+
};
|
|
32
|
+
saved_row_actions?: Array<Record<string, unknown>>;
|
|
33
|
+
editing_row_action?: Record<string, unknown>;
|
|
34
|
+
editing_row_action_problems?: string[];
|
|
35
|
+
}
|
|
36
|
+
/** What the host's surface reads and calls. Every call reads the panel as it is at that moment. */
|
|
37
|
+
interface TableSettingsAgent {
|
|
38
|
+
read: () => TableSettingsSnapshot;
|
|
39
|
+
/** Replace the open row action (or open a new one) with a whole action. */
|
|
40
|
+
stageRowAction: (input: unknown) => Promise<void>;
|
|
41
|
+
/** Write one Calculate step's formula in the open update action. */
|
|
42
|
+
stageStepFormula: (input: unknown) => Promise<void>;
|
|
43
|
+
/** Stage the description in "About this table". */
|
|
44
|
+
stageTableDetails: (input: unknown) => Promise<void>;
|
|
45
|
+
}
|
|
46
|
+
/** One step the agent sent, in the manifest's words, as the store's step. Throws on anything else. */
|
|
47
|
+
declare function stepFromAgent(input: unknown, index: number, fields: readonly Field[], check: (expression: string, where: string) => Promise<void>): Promise<RowActionStep>;
|
|
48
|
+
/** A whole row action the agent sent, as the store's action. Throws on anything the Save would refuse. */
|
|
49
|
+
declare function rowActionFromAgent(input: unknown, fields: readonly Field[], check: (expression: string, where: string) => Promise<void>): Promise<RowAction>;
|
|
50
|
+
/** The action as the agent reads it: columns by machine name, formulas as text. */
|
|
51
|
+
declare function actionForAgent(action: RowAction, fields: readonly Field[]): Record<string, unknown>;
|
|
52
|
+
|
|
22
53
|
/** One named piece of grounding, shaped the way the platform's context slice takes them. */
|
|
23
54
|
interface RecordChatEntry {
|
|
24
55
|
key: string;
|
|
@@ -33,8 +64,8 @@ interface RecordChatEntry {
|
|
|
33
64
|
* answer into a link to the record AND to the version it was read at.
|
|
34
65
|
*/
|
|
35
66
|
cite?: {
|
|
36
|
-
record_id: Uuid;
|
|
37
|
-
field_id: Uuid;
|
|
67
|
+
record_id: Uuid$1;
|
|
68
|
+
field_id: Uuid$1;
|
|
38
69
|
value_version: number;
|
|
39
70
|
written_at: string | null;
|
|
40
71
|
};
|
|
@@ -63,8 +94,8 @@ interface RecordChatContext {
|
|
|
63
94
|
* constant.
|
|
64
95
|
*/
|
|
65
96
|
surfaceKey: string;
|
|
66
|
-
tableId: Uuid;
|
|
67
|
-
recordId: Uuid;
|
|
97
|
+
tableId: Uuid$1;
|
|
98
|
+
recordId: Uuid$1;
|
|
68
99
|
tableName: string;
|
|
69
100
|
/** The record's own title, for the panel's one-row header and the chip. */
|
|
70
101
|
title: string;
|
|
@@ -89,16 +120,16 @@ interface RecordChatContext {
|
|
|
89
120
|
*/
|
|
90
121
|
declare const NO_CHAT_REASON: string;
|
|
91
122
|
interface RecordChatProps {
|
|
92
|
-
tableId: Uuid;
|
|
93
|
-
recordId: Uuid;
|
|
123
|
+
tableId: Uuid$1;
|
|
124
|
+
recordId: Uuid$1;
|
|
94
125
|
className?: string | undefined;
|
|
95
126
|
}
|
|
96
127
|
declare function RecordChat({ tableId, recordId, className }: RecordChatProps): react.JSX.Element;
|
|
97
128
|
|
|
98
129
|
/** What the host is asked to have the SERVER's `records` tool do. */
|
|
99
130
|
interface EnrichAsk {
|
|
100
|
-
tableId: Uuid;
|
|
101
|
-
fieldId: Uuid;
|
|
131
|
+
tableId: Uuid$1;
|
|
132
|
+
fieldId: Uuid$1;
|
|
102
133
|
fieldKey: string;
|
|
103
134
|
/** How many records this run covers. */
|
|
104
135
|
rows: number;
|
|
@@ -147,15 +178,15 @@ declare function EnrichBadge({ cell, onPin, className }: EnrichBadgeProps): reac
|
|
|
147
178
|
* badges, which is why the store answers the whole page at once. The hook is keyed by the
|
|
148
179
|
* record ids the grid is actually drawing, so paging re-asks and scrolling does not.
|
|
149
180
|
*/
|
|
150
|
-
declare function useEnrichCells(tableId: Uuid | undefined, recordIds: Uuid[] | undefined): {
|
|
181
|
+
declare function useEnrichCells(tableId: Uuid$1 | undefined, recordIds: Uuid$1[] | undefined): {
|
|
151
182
|
cells: Map<string, EnrichCell>;
|
|
152
183
|
refresh: () => Promise<void>;
|
|
153
184
|
error: RecordsError | null;
|
|
154
185
|
};
|
|
155
186
|
interface EnrichPanelProps {
|
|
156
|
-
tableId: Uuid;
|
|
187
|
+
tableId: Uuid$1;
|
|
157
188
|
/** Open straight onto one column. Absent, the panel lists every agent-owned column. */
|
|
158
|
-
fieldId?: Uuid | undefined;
|
|
189
|
+
fieldId?: Uuid$1 | undefined;
|
|
159
190
|
className?: string | undefined;
|
|
160
191
|
}
|
|
161
192
|
/**
|
|
@@ -415,12 +446,12 @@ declare function resolveTableStyle(decorations: TableDecorations | null | undefi
|
|
|
415
446
|
|
|
416
447
|
/** One record as the grid shows it: its id, its name (the row label) and its masked document. */
|
|
417
448
|
interface GridContextRecord {
|
|
418
|
-
id: Uuid
|
|
449
|
+
id: Uuid;
|
|
419
450
|
title: string;
|
|
420
451
|
document: RecordDocument;
|
|
421
452
|
}
|
|
422
453
|
interface GridContextSnapshot {
|
|
423
|
-
tableId: Uuid
|
|
454
|
+
tableId: Uuid;
|
|
424
455
|
tableName: string;
|
|
425
456
|
/** The table's own description (`metadata.description`), when it has one. */
|
|
426
457
|
tableDescription: string | null;
|
|
@@ -434,7 +465,7 @@ interface GridContextSnapshot {
|
|
|
434
465
|
canWrite: boolean;
|
|
435
466
|
/** The cell the cursor is on: its record, its Field key and the value drawn in it. */
|
|
436
467
|
currentCell: {
|
|
437
|
-
rowId: Uuid
|
|
468
|
+
rowId: Uuid;
|
|
438
469
|
key: string;
|
|
439
470
|
value: unknown;
|
|
440
471
|
} | null;
|
|
@@ -444,7 +475,7 @@ interface GridContextSnapshot {
|
|
|
444
475
|
selectedRange: {
|
|
445
476
|
tsv: string;
|
|
446
477
|
cellCount: number;
|
|
447
|
-
rowIds: Uuid
|
|
478
|
+
rowIds: Uuid[];
|
|
448
479
|
keys: string[];
|
|
449
480
|
} | null;
|
|
450
481
|
/** The rows ticked with the row boxes. */
|
|
@@ -467,7 +498,7 @@ interface GridCursor {
|
|
|
467
498
|
tsv: string;
|
|
468
499
|
}
|
|
469
500
|
declare function gridContextSnapshot(args: {
|
|
470
|
-
tableId: Uuid
|
|
501
|
+
tableId: Uuid;
|
|
471
502
|
table: Table | null;
|
|
472
503
|
fields: readonly Field[];
|
|
473
504
|
/** The Field keys on screen, in order. */
|
|
@@ -478,7 +509,7 @@ declare function gridContextSnapshot(args: {
|
|
|
478
509
|
cursor: GridCursor | null;
|
|
479
510
|
/** The cell whose editor is open, which wins over the cursor. */
|
|
480
511
|
editing: {
|
|
481
|
-
rowId: Uuid
|
|
512
|
+
rowId: Uuid;
|
|
482
513
|
key: string;
|
|
483
514
|
draft: unknown;
|
|
484
515
|
} | null;
|
|
@@ -538,7 +569,7 @@ interface HostLayout {
|
|
|
538
569
|
label: string;
|
|
539
570
|
/** Draw it for this table, with the question the address asked when there is one. */
|
|
540
571
|
render: (args: {
|
|
541
|
-
tableId: Uuid
|
|
572
|
+
tableId: Uuid;
|
|
542
573
|
filter?: StoreFilter | undefined;
|
|
543
574
|
/**
|
|
544
575
|
* Opens the page's own export (CSV, XLSX, copy and transform) — the one export a table has,
|
|
@@ -578,10 +609,10 @@ interface RichTextEditProps {
|
|
|
578
609
|
}
|
|
579
610
|
interface ReferenceChipRef {
|
|
580
611
|
token: string;
|
|
581
|
-
id: Uuid
|
|
612
|
+
id: Uuid;
|
|
582
613
|
label: string | null;
|
|
583
614
|
/** For `token: "record"`, the Table the relation points into. */
|
|
584
|
-
tableId?: Uuid
|
|
615
|
+
tableId?: Uuid | undefined;
|
|
585
616
|
/**
|
|
586
617
|
* The record it names sits in Archived items. An archive keeps every reference to what it
|
|
587
618
|
* archived (chair ruling B3-21), so the chip still names it and draws the archived state.
|
|
@@ -639,12 +670,32 @@ interface RecordsUiHost {
|
|
|
639
670
|
label: string;
|
|
640
671
|
onChange: (name: string) => void;
|
|
641
672
|
}) => ReactNode;
|
|
673
|
+
/**
|
|
674
|
+
* OPTIONAL. HELP WRITING A FORMULA (Sheet retirement). The formula box hands the host what it
|
|
675
|
+
* holds — the text, the table's other columns and the store's reading of what is wrong — and the
|
|
676
|
+
* host draws its own help control beside the box (matrx-frontend runs its formula-writing job).
|
|
677
|
+
* Whatever formula the help arrives at goes back through `onFormula` into the box, unsaved, for
|
|
678
|
+
* the person to keep or change. Unbound, nothing is drawn.
|
|
679
|
+
*/
|
|
680
|
+
formulaHelp?: (ask: FormulaHelpAsk) => ReactNode;
|
|
681
|
+
/**
|
|
682
|
+
* OPTIONAL. AN AGENT OVER A TABLE'S SETTINGS (Sheet retirement). While the settings panel is open
|
|
683
|
+
* it wraps itself in what this returns, handing the host a `TableSettingsAgent`: what the panel
|
|
684
|
+
* can see (the description as edited, the row actions and the one being edited, what stops it
|
|
685
|
+
* saving) and three staging calls (a whole row action, one step's formula, the description).
|
|
686
|
+
* Staging never saves; the person presses Save. Unbound, the panel draws bare.
|
|
687
|
+
*/
|
|
688
|
+
settingsAgent?: (args: {
|
|
689
|
+
tableId: Uuid;
|
|
690
|
+
agent: TableSettingsAgent;
|
|
691
|
+
children: ReactNode;
|
|
692
|
+
}) => ReactNode;
|
|
642
693
|
/** Answer the rights question for one table. Synchronous: a screen renders now. */
|
|
643
694
|
rights?: (table: Table) => TableRights;
|
|
644
695
|
/** Where a record's own page lives, when the host has one. A peek is used when it does not. */
|
|
645
696
|
hrefForRecord?: (args: {
|
|
646
697
|
table: Table;
|
|
647
|
-
recordId: Uuid
|
|
698
|
+
recordId: Uuid;
|
|
648
699
|
}) => string | undefined;
|
|
649
700
|
/**
|
|
650
701
|
* OPTIONAL. WHERE A FILE OPENS. A value too big for one cell is kept as a file and the cell
|
|
@@ -653,7 +704,7 @@ interface RecordsUiHost {
|
|
|
653
704
|
* screen cannot open — never a dead link.
|
|
654
705
|
*/
|
|
655
706
|
hrefForFile?: (args: {
|
|
656
|
-
fileId: Uuid
|
|
707
|
+
fileId: Uuid;
|
|
657
708
|
}) => string | undefined;
|
|
658
709
|
/**
|
|
659
710
|
* OPTIONAL. READ A FILE'S WHOLE TEXT, so an export writes a big value's whole content rather
|
|
@@ -661,7 +712,7 @@ interface RecordsUiHost {
|
|
|
661
712
|
* the file (`wholeValueNotRead`) — never the words passed off as the value.
|
|
662
713
|
*/
|
|
663
714
|
readFileText?: (args: {
|
|
664
|
-
fileId: Uuid
|
|
715
|
+
fileId: Uuid;
|
|
665
716
|
}) => Promise<string>;
|
|
666
717
|
/**
|
|
667
718
|
* OPTIONAL. A FILE DRAWN AS A PICTURE — the gallery card's cover when the view's picture column
|
|
@@ -670,7 +721,7 @@ interface RecordsUiHost {
|
|
|
670
721
|
* the cover says in words that this screen cannot draw files, never a broken image.
|
|
671
722
|
*/
|
|
672
723
|
fileImage?: (args: {
|
|
673
|
-
fileId: Uuid
|
|
724
|
+
fileId: Uuid;
|
|
674
725
|
alt: string;
|
|
675
726
|
}) => ReactNode;
|
|
676
727
|
/**
|
|
@@ -750,7 +801,7 @@ interface RecordsUiHost {
|
|
|
750
801
|
*/
|
|
751
802
|
upload?: (file: File) => Promise<{
|
|
752
803
|
ok: true;
|
|
753
|
-
fileId: Uuid
|
|
804
|
+
fileId: Uuid;
|
|
754
805
|
} | {
|
|
755
806
|
ok: false;
|
|
756
807
|
reason: string;
|
|
@@ -769,7 +820,7 @@ interface RecordsUiHost {
|
|
|
769
820
|
pickFiles?: (ask: {
|
|
770
821
|
multiple: boolean;
|
|
771
822
|
accept?: string;
|
|
772
|
-
}) => Promise<Uuid
|
|
823
|
+
}) => Promise<Uuid[] | null>;
|
|
773
824
|
/**
|
|
774
825
|
* Where this app serves its PUBLIC pages from, when that is not the origin
|
|
775
826
|
* the screen is running on. A form's link is built here, so an owner copying
|
|
@@ -789,7 +840,7 @@ interface RecordsUiHost {
|
|
|
789
840
|
* an empty picker that looks like "you have no views".
|
|
790
841
|
*/
|
|
791
842
|
savedViews?: () => Promise<Array<{
|
|
792
|
-
id: Uuid
|
|
843
|
+
id: Uuid;
|
|
793
844
|
name: string;
|
|
794
845
|
}>>;
|
|
795
846
|
/**
|
|
@@ -827,8 +878,8 @@ interface RecordsUiHost {
|
|
|
827
878
|
* stamped with it). Unbound, nothing is drawn.
|
|
828
879
|
*/
|
|
829
880
|
recordSections?: (target: {
|
|
830
|
-
tableId: Uuid
|
|
831
|
-
recordId: Uuid
|
|
881
|
+
tableId: Uuid;
|
|
882
|
+
recordId: Uuid;
|
|
832
883
|
}) => ReactNode;
|
|
833
884
|
/**
|
|
834
885
|
* OPTIONAL. THE PLATFORM'S ONE RICH EDITOR, for a record page's body (lane TABLE-EXPERIENCE,
|
|
@@ -858,8 +909,8 @@ interface RecordsUiHost {
|
|
|
858
909
|
* available here.
|
|
859
910
|
*/
|
|
860
911
|
linkRecord?: (target: {
|
|
861
|
-
tableId: Uuid
|
|
862
|
-
recordId: Uuid
|
|
912
|
+
tableId: Uuid;
|
|
913
|
+
recordId: Uuid;
|
|
863
914
|
name: string;
|
|
864
915
|
}) => void;
|
|
865
916
|
/**
|
|
@@ -878,8 +929,8 @@ interface RecordsUiHost {
|
|
|
878
929
|
* not render at all.
|
|
879
930
|
*/
|
|
880
931
|
talkToRecord?: (target: {
|
|
881
|
-
tableId: Uuid
|
|
882
|
-
recordId: Uuid
|
|
932
|
+
tableId: Uuid;
|
|
933
|
+
recordId: Uuid;
|
|
883
934
|
title: string;
|
|
884
935
|
}) => void;
|
|
885
936
|
/**
|
|
@@ -900,8 +951,8 @@ interface RecordsUiHost {
|
|
|
900
951
|
* job, and the agent is handed exactly what the person was looking at.
|
|
901
952
|
*/
|
|
902
953
|
runAgentAction?: (target: {
|
|
903
|
-
tableId: Uuid
|
|
904
|
-
recordId: Uuid
|
|
954
|
+
tableId: Uuid;
|
|
955
|
+
recordId: Uuid;
|
|
905
956
|
title: string;
|
|
906
957
|
action: string;
|
|
907
958
|
prompt: string;
|
|
@@ -990,9 +1041,9 @@ interface RecordsUiHost {
|
|
|
990
1041
|
* Dashboards area lists no pages and offers no "New page" — absent, never dead.
|
|
991
1042
|
*/
|
|
992
1043
|
pageHref?: (target: {
|
|
993
|
-
pageId: Uuid
|
|
1044
|
+
pageId: Uuid;
|
|
994
1045
|
} | {
|
|
995
|
-
newOnTable: Uuid
|
|
1046
|
+
newOnTable: Uuid;
|
|
996
1047
|
}) => string;
|
|
997
1048
|
/**
|
|
998
1049
|
* OPTIONAL. ASK THE AGENT TO CHANGE THIS DASHBOARD (SCR-16).
|
|
@@ -1028,6 +1079,20 @@ interface RecordsUiHost {
|
|
|
1028
1079
|
*/
|
|
1029
1080
|
onAskForOne?: (ask: AgentBuildAsk) => void;
|
|
1030
1081
|
}
|
|
1082
|
+
/** What the formula box hands the host's help (`formulaHelp`). */
|
|
1083
|
+
interface FormulaHelpAsk {
|
|
1084
|
+
tableId: Uuid;
|
|
1085
|
+
/** The formula as it stands in the box (may be empty). */
|
|
1086
|
+
text: string;
|
|
1087
|
+
/** The table's other columns, the ones the formula may read as {Name}. */
|
|
1088
|
+
columns: readonly Field[];
|
|
1089
|
+
/** The store's reading of what is wrong with the text, when it does not parse. */
|
|
1090
|
+
mistake: string | null;
|
|
1091
|
+
/** The functions the store works out, as a person types them. */
|
|
1092
|
+
functions: readonly string[];
|
|
1093
|
+
/** Put a formula into the box (unsaved). */
|
|
1094
|
+
onFormula: (text: string) => void;
|
|
1095
|
+
}
|
|
1031
1096
|
/** What a person is asking an agent to make, and where they were standing. */
|
|
1032
1097
|
interface AgentBuildAsk {
|
|
1033
1098
|
/**
|
|
@@ -1035,7 +1100,7 @@ interface AgentBuildAsk {
|
|
|
1035
1100
|
* agent adds it through the store's field door, held for approval like every agent schema change.
|
|
1036
1101
|
*/
|
|
1037
1102
|
kind: "form" | "booking" | "portal" | "digest" | "column";
|
|
1038
|
-
tableId: Uuid
|
|
1103
|
+
tableId: Uuid;
|
|
1039
1104
|
/** The sentence this package would say. A host opens its composer with it. */
|
|
1040
1105
|
suggestion: string;
|
|
1041
1106
|
}
|
|
@@ -1047,16 +1112,16 @@ interface AgentBuildAsk {
|
|
|
1047
1112
|
* counted, which is the one way this control can lie.
|
|
1048
1113
|
*/
|
|
1049
1114
|
interface OpenRecordsAsk {
|
|
1050
|
-
tableId: Uuid
|
|
1115
|
+
tableId: Uuid;
|
|
1051
1116
|
filter: Record<string, AggregateFilter>;
|
|
1052
1117
|
/** What the person clicked, in words: "Jobs by stage this month · Awaiting parts". */
|
|
1053
1118
|
label: string;
|
|
1054
1119
|
}
|
|
1055
1120
|
/** Which dashboard a re-ask is about, so the agent re-states it rather than making a second one. */
|
|
1056
1121
|
interface ReaskContext {
|
|
1057
|
-
tableId: Uuid
|
|
1122
|
+
tableId: Uuid;
|
|
1058
1123
|
/** Null while the canvas has no dashboard yet — the answer is the first one. */
|
|
1059
|
-
dashboardId: Uuid
|
|
1124
|
+
dashboardId: Uuid | null;
|
|
1060
1125
|
dashboardName: string | null;
|
|
1061
1126
|
}
|
|
1062
1127
|
/**
|
|
@@ -1068,8 +1133,8 @@ interface ReaskContext {
|
|
|
1068
1133
|
interface ShareSubject {
|
|
1069
1134
|
kind: "record" | "table";
|
|
1070
1135
|
/** The store is keyed (organization_id, id); this package never guesses one. */
|
|
1071
|
-
organizationId: Uuid
|
|
1072
|
-
subjectId: Uuid
|
|
1136
|
+
organizationId: Uuid;
|
|
1137
|
+
subjectId: Uuid;
|
|
1073
1138
|
/** What to call it on screen. Never empty — the id's first eight characters at worst. */
|
|
1074
1139
|
name: string;
|
|
1075
1140
|
/** Close the dialog. The control owns the open/closed state, the host owns the dialog. */
|
|
@@ -1097,7 +1162,7 @@ interface PendingCapture {
|
|
|
1097
1162
|
* tell a retry from a second capture.
|
|
1098
1163
|
*/
|
|
1099
1164
|
clientKey: string;
|
|
1100
|
-
tableId: Uuid
|
|
1165
|
+
tableId: Uuid;
|
|
1101
1166
|
payload: Record<string, unknown>;
|
|
1102
1167
|
capturedAt: string;
|
|
1103
1168
|
device: string;
|
|
@@ -1164,7 +1229,7 @@ declare function useTableRights(table: Table | null | undefined): TableRights;
|
|
|
1164
1229
|
* colleague at Editor inside a table she holds at Viewer. The grid used to
|
|
1165
1230
|
* label that row "viewer" while the store let her write to it.
|
|
1166
1231
|
*/
|
|
1167
|
-
declare function useRecordRights(recordId: Uuid
|
|
1232
|
+
declare function useRecordRights(recordId: Uuid | null): WhatYouMayDo;
|
|
1168
1233
|
/**
|
|
1169
1234
|
* The same question for a whole page of records, in ONE call — the door takes a
|
|
1170
1235
|
* list precisely so a grid never makes one call per row.
|
|
@@ -1173,7 +1238,37 @@ declare function useRecordRights(recordId: Uuid$1 | null): WhatYouMayDo;
|
|
|
1173
1238
|
* table level already admits editing, every row it returned is editable and
|
|
1174
1239
|
* there is nothing a per-record answer could add.
|
|
1175
1240
|
*/
|
|
1176
|
-
declare function useRowRights(rowIds: Uuid
|
|
1241
|
+
declare function useRowRights(rowIds: Uuid[], enabled: boolean): (rowId: Uuid) => WhatYouMayDo | null;
|
|
1242
|
+
|
|
1243
|
+
/** The functions the store's evaluator answers, from its generated vocabulary. */
|
|
1244
|
+
declare const FORMULA_FUNCTIONS: string[];
|
|
1245
|
+
|
|
1246
|
+
/** The columns a record may be named by, in the table's order. Pure. */
|
|
1247
|
+
declare function rowLabelChoices(fields: readonly Field$1[]): Array<{
|
|
1248
|
+
value: string;
|
|
1249
|
+
label: string;
|
|
1250
|
+
}>;
|
|
1251
|
+
/** The patch that keeps a description: the table's other metadata is carried, never dropped. Pure. */
|
|
1252
|
+
declare function descriptionPatch(table: Pick<Table$1, "metadata">, text: string): {
|
|
1253
|
+
metadata: Record<string, unknown>;
|
|
1254
|
+
};
|
|
1255
|
+
declare function TableDetails({ tableId, table, fields, onSaved, }: {
|
|
1256
|
+
tableId: Uuid$1;
|
|
1257
|
+
table: Table$1;
|
|
1258
|
+
fields: readonly Field$1[];
|
|
1259
|
+
onSaved?: (() => void) | undefined;
|
|
1260
|
+
}): react.JSX.Element;
|
|
1261
|
+
/**
|
|
1262
|
+
* WRITE A TABLE'S DESCRIPTION, from outside this panel (an agent's confirmed write, Sheet
|
|
1263
|
+
* retirement): the table read fresh, the same patch and the same version-checked door the panel's
|
|
1264
|
+
* own Save uses, and the same shape nudge, so every open screen re-reads it.
|
|
1265
|
+
*/
|
|
1266
|
+
declare function saveTableDescription(client: Pick<RecordsClient, "tableRead" | "revisions" | "recordHeaders" | "recordUpdate" | "recordUpdateAddingChoices">, tableId: Uuid$1, text: string): Promise<{
|
|
1267
|
+
ok: true;
|
|
1268
|
+
} | {
|
|
1269
|
+
ok: false;
|
|
1270
|
+
says: string;
|
|
1271
|
+
}>;
|
|
1177
1272
|
|
|
1178
1273
|
/**
|
|
1179
1274
|
* MACHINE IDENTITY, BY SHAPE — never by a list of the sentences we happen to
|
|
@@ -1335,13 +1430,13 @@ declare function cardTitleField(fields: readonly Field[], titleKey: string | nul
|
|
|
1335
1430
|
/** What a person has chosen: the table, and optionally which of its columns to show. */
|
|
1336
1431
|
interface ReferenceChoice {
|
|
1337
1432
|
/** The Table whose records this column offers. `""` until one is picked. */
|
|
1338
|
-
targetTableId: Uuid
|
|
1433
|
+
targetTableId: Uuid | "";
|
|
1339
1434
|
/** Which of that Table's columns to show. `null` = the Table's own reference column. */
|
|
1340
1435
|
display: RelationDisplay | null;
|
|
1341
1436
|
}
|
|
1342
1437
|
interface ReferenceBuilderProps {
|
|
1343
1438
|
/** The Table the column being built lives on, so "this table" can be marked. */
|
|
1344
|
-
tableId: Uuid
|
|
1439
|
+
tableId: Uuid;
|
|
1345
1440
|
value: ReferenceChoice;
|
|
1346
1441
|
onChange: (next: ReferenceChoice) => void;
|
|
1347
1442
|
/**
|
|
@@ -1378,7 +1473,7 @@ interface PersonPickerProps {
|
|
|
1378
1473
|
}
|
|
1379
1474
|
/** A Person record in the kernel Table, as this picker needs to read it. */
|
|
1380
1475
|
interface PersonRecord {
|
|
1381
|
-
id: Uuid
|
|
1476
|
+
id: Uuid;
|
|
1382
1477
|
userId: string | null;
|
|
1383
1478
|
name: string;
|
|
1384
1479
|
}
|
|
@@ -1389,9 +1484,9 @@ declare function memberName(member: OrganizationMember): string;
|
|
|
1389
1484
|
* an agent filling a person field server-side needs exactly the same answer,
|
|
1390
1485
|
* and two implementations of "which record is this person" is two answers.
|
|
1391
1486
|
*/
|
|
1392
|
-
declare function personRecordForMember(client: RecordsClient, personTableId: Uuid
|
|
1487
|
+
declare function personRecordForMember(client: RecordsClient, personTableId: Uuid, people: PersonRecord[], member: OrganizationMember): Promise<{
|
|
1393
1488
|
ok: true;
|
|
1394
|
-
data: Uuid
|
|
1489
|
+
data: Uuid;
|
|
1395
1490
|
} | {
|
|
1396
1491
|
ok: false;
|
|
1397
1492
|
error: RecordsError;
|
|
@@ -1400,23 +1495,23 @@ declare function PersonPicker({ field, value, onChange, disabled, id, className,
|
|
|
1400
1495
|
|
|
1401
1496
|
interface RecordVersions {
|
|
1402
1497
|
/** The version the person saw this record at; waits for the read of freshly drawn rows. `null` = unread. */
|
|
1403
|
-
seen: (id: Uuid
|
|
1498
|
+
seen: (id: Uuid) => Promise<number | null>;
|
|
1404
1499
|
/** The same, for many records at once. */
|
|
1405
|
-
seenMany: (ids: readonly Uuid
|
|
1500
|
+
seenMany: (ids: readonly Uuid[]) => Promise<Map<Uuid, number | null>>;
|
|
1406
1501
|
/** A write this screen made moved the record on (a version only goes up). */
|
|
1407
|
-
wrote: (id: Uuid
|
|
1502
|
+
wrote: (id: Uuid, version: number) => void;
|
|
1408
1503
|
/**
|
|
1409
1504
|
* Read these records' versions again now: the person pressed Reload, or the store refused a write
|
|
1410
1505
|
* because somebody else won (`PT409`) — the rows are re-read too, so the next write is against what
|
|
1411
1506
|
* the person then sees. A change that moved only the version (who sees the row) never re-reads by
|
|
1412
1507
|
* content, so without this the row stayed refused until the screen was opened again (verifier V10).
|
|
1413
1508
|
*/
|
|
1414
|
-
refresh: (ids: readonly Uuid
|
|
1509
|
+
refresh: (ids: readonly Uuid[]) => void;
|
|
1415
1510
|
}
|
|
1416
1511
|
|
|
1417
1512
|
/** Which cell is open. A grid opens exactly one at a time, like every other grid. */
|
|
1418
1513
|
interface CellAddress {
|
|
1419
|
-
rowId: Uuid
|
|
1514
|
+
rowId: Uuid;
|
|
1420
1515
|
key: string;
|
|
1421
1516
|
}
|
|
1422
1517
|
/** What one cell is doing right now, so nothing about it is guessed by a caller. */
|
|
@@ -1427,6 +1522,14 @@ interface CellRefusal {
|
|
|
1427
1522
|
conflict: WriteConflict | null;
|
|
1428
1523
|
/** The value that was being written, so Retry can write it again. */
|
|
1429
1524
|
attempted: unknown;
|
|
1525
|
+
/**
|
|
1526
|
+
* THE WRITE NEVER REACHED THE STORE (offline, `unreachable`): nothing was refused. The typed value
|
|
1527
|
+
* stays in the cell, the cell says "Not saved", and it is sent again when the browser is back
|
|
1528
|
+
* online (`unsentWrites`). Try now / Discard meanwhile.
|
|
1529
|
+
*/
|
|
1530
|
+
unsent?: boolean | undefined;
|
|
1531
|
+
/** What the edit started from, so a resend is judged against the same base. */
|
|
1532
|
+
base?: unknown;
|
|
1430
1533
|
}
|
|
1431
1534
|
declare function fieldIsEditable(field: Field): boolean;
|
|
1432
1535
|
interface GridEditing {
|
|
@@ -1437,8 +1540,8 @@ interface GridEditing {
|
|
|
1437
1540
|
draft: unknown;
|
|
1438
1541
|
/** The open cell's editor reports every keystroke to the session. */
|
|
1439
1542
|
type: (value: unknown) => void;
|
|
1440
|
-
stateOf: (rowId: Uuid
|
|
1441
|
-
refusalOf: (rowId: Uuid
|
|
1543
|
+
stateOf: (rowId: Uuid, key: string) => CellState;
|
|
1544
|
+
refusalOf: (rowId: Uuid, key: string) => CellRefusal | null;
|
|
1442
1545
|
/**
|
|
1443
1546
|
* Open a cell's editor. `seed` is what the person TYPED to open it (type-to-edit: a letter, an
|
|
1444
1547
|
* IME composition, an Option/AltGr character): a column a person types into opens holding
|
|
@@ -1473,34 +1576,36 @@ interface GridEditing {
|
|
|
1473
1576
|
* versioned, optimistic write path every other cell uses — the refusal, the conflict and
|
|
1474
1577
|
* the "Try again" beside it are identical.
|
|
1475
1578
|
*/
|
|
1476
|
-
setCell: (rowId: Uuid
|
|
1579
|
+
setCell: (rowId: Uuid, key: string, value: unknown) => void;
|
|
1477
1580
|
/**
|
|
1478
1581
|
* A VERSION CONFLICT ONLY: write the attempted value again, on top of the
|
|
1479
1582
|
* version the store said won. Never offered for a refusal of the VALUE — the
|
|
1480
1583
|
* same value would be refused the same way (VERIFIER-15 H2).
|
|
1481
1584
|
*/
|
|
1482
|
-
retry: (rowId: Uuid
|
|
1585
|
+
retry: (rowId: Uuid, key: string) => void;
|
|
1483
1586
|
/** A VERSION CONFLICT ONLY: drop the edit and show what the other person wrote. */
|
|
1484
|
-
keepTheirs: (rowId: Uuid
|
|
1587
|
+
keepTheirs: (rowId: Uuid, key: string) => void;
|
|
1588
|
+
/** AN UNSENT WRITE ONLY: send it again now (it also goes by itself when the browser is back online). */
|
|
1589
|
+
tryNow: (rowId: Uuid, key: string) => void;
|
|
1485
1590
|
/**
|
|
1486
1591
|
* KEEP EDITING — the refused cell opens again HOLDING WHAT WAS TYPED, so the
|
|
1487
1592
|
* person corrects `-3` rather than typing it from nothing (lane
|
|
1488
1593
|
* RECORDS-UI-FIX, VERIFIER-15 H2).
|
|
1489
1594
|
*/
|
|
1490
|
-
keepEditing: (rowId: Uuid
|
|
1595
|
+
keepEditing: (rowId: Uuid, key: string) => void;
|
|
1491
1596
|
/** DISCARD — throw the refused value away; the cell shows what is stored. */
|
|
1492
|
-
discard: (rowId: Uuid
|
|
1597
|
+
discard: (rowId: Uuid, key: string) => void;
|
|
1493
1598
|
/**
|
|
1494
1599
|
* FORGET WHAT THIS SESSION DREW FOR THESE CELLS — after a change made OUTSIDE the editor (an
|
|
1495
1600
|
* undo, a bulk change) the store holds a new value and a new version, so the optimistic value
|
|
1496
1601
|
* and the version this session held for the row are both stale.
|
|
1497
1602
|
*/
|
|
1498
1603
|
forget: (cells: ReadonlyArray<{
|
|
1499
|
-
rowId: Uuid
|
|
1604
|
+
rowId: Uuid;
|
|
1500
1605
|
key: string;
|
|
1501
1606
|
}>) => void;
|
|
1502
1607
|
/** Soft delete, through the store's own door. Answers the store's refusal, or null. */
|
|
1503
|
-
remove: (rowId: Uuid
|
|
1608
|
+
remove: (rowId: Uuid) => Promise<RecordsError | null>;
|
|
1504
1609
|
/** Write an empty record and open its first editable cell. */
|
|
1505
1610
|
addRecord: () => Promise<RecordsError | null>;
|
|
1506
1611
|
/** The last refusal from a delete or an add, for the grid to print. */
|
|
@@ -1513,10 +1618,10 @@ interface GridEditing {
|
|
|
1513
1618
|
* grid hands it to the data table as `rowVersion`, so a keystroke, a save or a refusal redraws
|
|
1514
1619
|
* the ONE row it belongs to and no other.
|
|
1515
1620
|
*/
|
|
1516
|
-
rowSignature: (rowId: Uuid
|
|
1621
|
+
rowSignature: (rowId: Uuid) => readonly unknown[];
|
|
1517
1622
|
}
|
|
1518
1623
|
interface Options {
|
|
1519
|
-
tableId: Uuid
|
|
1624
|
+
tableId: Uuid;
|
|
1520
1625
|
fields: Field[];
|
|
1521
1626
|
rows: ReadRow[];
|
|
1522
1627
|
/** Re-read the page once the store has accepted something. */
|
|
@@ -1540,7 +1645,7 @@ interface Options {
|
|
|
1540
1645
|
* write to it. Unbound, every row follows the table, which is what the
|
|
1541
1646
|
* ordinary case is.
|
|
1542
1647
|
*/
|
|
1543
|
-
mayWriteRow?: ((rowId: Uuid
|
|
1648
|
+
mayWriteRow?: ((rowId: Uuid) => boolean) | undefined;
|
|
1544
1649
|
/**
|
|
1545
1650
|
* A CELL THE STORE ACCEPTED, with what it held before and what it holds now (merge tranche 6d):
|
|
1546
1651
|
* the merged grid's undo pushes one step per accepted cell. Unbound, nothing is told.
|
|
@@ -1552,7 +1657,7 @@ interface Options {
|
|
|
1552
1657
|
versions?: RecordVersions | undefined;
|
|
1553
1658
|
/** One cell the store took: its value before and after, and the record version that write made. */
|
|
1554
1659
|
onWritten?: ((write: {
|
|
1555
|
-
rowId: Uuid
|
|
1660
|
+
rowId: Uuid;
|
|
1556
1661
|
key: string;
|
|
1557
1662
|
before: unknown;
|
|
1558
1663
|
after: unknown;
|
|
@@ -1612,7 +1717,7 @@ declare function GridCell({ field, row, editing, canWrite, whyNot, format, onAsk
|
|
|
1612
1717
|
* looking at. Bound by the host; absent, no control is drawn at all, because
|
|
1613
1718
|
* a control that opens nothing is the thing this package exists to prevent.
|
|
1614
1719
|
*/
|
|
1615
|
-
onAskWhoChanged?: ((fieldKey: string, recordId: Uuid
|
|
1720
|
+
onAskWhoChanged?: ((fieldKey: string, recordId: Uuid) => void) | undefined;
|
|
1616
1721
|
}): react.JSX.Element;
|
|
1617
1722
|
|
|
1618
1723
|
/**
|
|
@@ -1838,7 +1943,7 @@ type ViewOrder = "manual" | "sorted" | null;
|
|
|
1838
1943
|
interface SavedViewSpec {
|
|
1839
1944
|
name: string;
|
|
1840
1945
|
/** The Table this view looks at. */
|
|
1841
|
-
subject: Uuid
|
|
1946
|
+
subject: Uuid;
|
|
1842
1947
|
layout: ViewLayout;
|
|
1843
1948
|
/** Kanban: the Field whose value becomes a column. */
|
|
1844
1949
|
groupField?: string | null;
|
|
@@ -1876,7 +1981,7 @@ interface SavedViewSpec {
|
|
|
1876
1981
|
* The membership Rule. The STORE decides who is in this view; this is a
|
|
1877
1982
|
* reference to its Rule record, never a predicate this package evaluates.
|
|
1878
1983
|
*/
|
|
1879
|
-
ruleId?: Uuid
|
|
1984
|
+
ruleId?: Uuid | null;
|
|
1880
1985
|
/**
|
|
1881
1986
|
* THE FLAT FILTER a digest or a notify rule wrote the view with — the one shape
|
|
1882
1987
|
* `custom.record_filter_sql` compiles, by Field KEY. A view saved in the bar has
|
|
@@ -1913,7 +2018,7 @@ interface SavedViewSpec {
|
|
|
1913
2018
|
* pressed in both keeps the latest — how Airtable and Notion keep a view change.
|
|
1914
2019
|
*/
|
|
1915
2020
|
interface SavedView extends SavedViewSpec {
|
|
1916
|
-
id: Uuid
|
|
2021
|
+
id: Uuid;
|
|
1917
2022
|
/** Where the view came from when it was moved in (the mover, the S0 repair), else null. */
|
|
1918
2023
|
movedFrom: Record<string, unknown> | null;
|
|
1919
2024
|
/**
|
|
@@ -2042,7 +2147,7 @@ declare function viewFromRow(row: SavedViewRow): SavedView;
|
|
|
2042
2147
|
* SAVE ONE NEW VIEW of a Table — the bar's "New view" and an agent's seed spec.
|
|
2043
2148
|
* One `view_declare` with no `view_id`; the answer is the new view's id.
|
|
2044
2149
|
*/
|
|
2045
|
-
declare function declareView(client: Pick<RecordsClient, "viewDeclare">, spec: SavedViewSpec): Promise<RecordsResult<Uuid
|
|
2150
|
+
declare function declareView(client: Pick<RecordsClient, "viewDeclare">, spec: SavedViewSpec): Promise<RecordsResult<Uuid>>;
|
|
2046
2151
|
/**
|
|
2047
2152
|
* WRITE A CHANGE ONTO A SAVED VIEW, AND KEEP IT.
|
|
2048
2153
|
*
|
|
@@ -2058,7 +2163,7 @@ declare function declareView(client: Pick<RecordsClient, "viewDeclare">, spec: S
|
|
|
2058
2163
|
* was removed, or belongs to a table this person cannot open — is handed back for
|
|
2059
2164
|
* the page to say through the one notice.
|
|
2060
2165
|
*/
|
|
2061
|
-
declare function saveViewPatch(client: Pick<RecordsClient, "viewDeclare">, tableId: Uuid
|
|
2166
|
+
declare function saveViewPatch(client: Pick<RecordsClient, "viewDeclare">, tableId: Uuid, viewId: Uuid, patch: Partial<SavedViewSpec>): Promise<RecordsResult<Uuid>>;
|
|
2062
2167
|
/**
|
|
2063
2168
|
* A PARTIAL change to a saved view, as the definition keys the door merges. Only
|
|
2064
2169
|
* the keys the caller actually changed are sent; a Field cleared (a board with no
|
|
@@ -2129,13 +2234,13 @@ declare function handOrderSortState(args: {
|
|
|
2129
2234
|
* key (`names.ts`) — and the cell is the value, rendered by its parity type and
|
|
2130
2235
|
* editable in place when an editing session is passed.
|
|
2131
2236
|
*/
|
|
2132
|
-
declare function columnForField(field: Field$1, editing?: GridEditing | null, mayWriteRow?: (rowId: Uuid) => boolean, whyNotRow?: (rowId: Uuid) => string, look?: {
|
|
2237
|
+
declare function columnForField(field: Field$1, editing?: GridEditing | null, mayWriteRow?: (rowId: Uuid$1) => boolean, whyNotRow?: (rowId: Uuid$1) => string, look?: {
|
|
2133
2238
|
format?: FieldFormatConfig;
|
|
2134
2239
|
frozen?: boolean;
|
|
2135
2240
|
rowLabel?: boolean;
|
|
2136
2241
|
},
|
|
2137
2242
|
/** "Who changed this?" from the cell's own menu. Absent, no control is drawn. */
|
|
2138
|
-
onAskWhoChanged?: ((fieldKey: string, recordId: Uuid) => void) | undefined,
|
|
2243
|
+
onAskWhoChanged?: ((fieldKey: string, recordId: Uuid$1) => void) | undefined,
|
|
2139
2244
|
/**
|
|
2140
2245
|
* PRODUCTS row 10 — the provenance of a cell a MODEL owns. `cellFor` answers the page's
|
|
2141
2246
|
* already-fetched badge data for one row; `onPin` is bound only where this person may
|
|
@@ -2143,8 +2248,8 @@ onAskWhoChanged?: ((fieldKey: string, recordId: Uuid) => void) | undefined,
|
|
|
2143
2248
|
* have. Absent entirely, no badge is drawn and the column looks exactly as it did.
|
|
2144
2249
|
*/
|
|
2145
2250
|
enrich?: {
|
|
2146
|
-
cellFor: (recordId: Uuid) => _ai_matrx_records.EnrichCell | undefined;
|
|
2147
|
-
onPin?: ((recordId: Uuid, fieldKey: string, pinned: boolean) => void | Promise<void>) | undefined;
|
|
2251
|
+
cellFor: (recordId: Uuid$1) => _ai_matrx_records.EnrichCell | undefined;
|
|
2252
|
+
onPin?: ((recordId: Uuid$1, fieldKey: string, pinned: boolean) => void | Promise<void>) | undefined;
|
|
2148
2253
|
}): MatrxColumnDef<ReadRow$1>;
|
|
2149
2254
|
|
|
2150
2255
|
declare const NO_COLUMNS_YET = "This table has no columns yet";
|
|
@@ -2157,7 +2262,7 @@ declare const NO_COLUMNS_YET = "This table has no columns yet";
|
|
|
2157
2262
|
*/
|
|
2158
2263
|
interface GridViewOrder {
|
|
2159
2264
|
/** The saved view's id; `null` for a view a host holds inline (it still carries its own `sorts`). */
|
|
2160
|
-
viewId: Uuid | null;
|
|
2265
|
+
viewId: Uuid$1 | null;
|
|
2161
2266
|
/** The view's own order word (`definition.order`). */
|
|
2162
2267
|
order: ViewOrder;
|
|
2163
2268
|
/** The view's own sort (`definition.sorts`) — where a sorted view OPENS, over the table's. */
|
|
@@ -2174,7 +2279,7 @@ interface GridViewOrder {
|
|
|
2174
2279
|
onUseSort?: ((sort: ColumnSort) => void) | undefined;
|
|
2175
2280
|
}
|
|
2176
2281
|
interface GridProps {
|
|
2177
|
-
tableId: Uuid;
|
|
2282
|
+
tableId: Uuid$1;
|
|
2178
2283
|
/** Rows per page. The table's own pagination handles the rest. */
|
|
2179
2284
|
pageSize?: number | undefined;
|
|
2180
2285
|
/**
|
|
@@ -2198,13 +2303,13 @@ interface GridProps {
|
|
|
2198
2303
|
*/
|
|
2199
2304
|
onClearFilter?: (() => void) | undefined;
|
|
2200
2305
|
/** Opened from a row's handle, Space or the row menu. A host that has a record page passes its own. */
|
|
2201
|
-
onOpenRecord?: ((recordId: Uuid) => void) | undefined;
|
|
2306
|
+
onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
|
|
2202
2307
|
/**
|
|
2203
2308
|
* THE RECORD THE HOST HAS OPEN BESIDE THE GRID, if any (merged grid). While one is open the panel
|
|
2204
2309
|
* FOLLOWS the cursor: arrowing to another row opens that row (Airtable's expanded record walks
|
|
2205
2310
|
* with the arrows), so the panel always shows the row the person is on.
|
|
2206
2311
|
*/
|
|
2207
|
-
openRecordId?: Uuid | null | undefined;
|
|
2312
|
+
openRecordId?: Uuid$1 | null | undefined;
|
|
2208
2313
|
/**
|
|
2209
2314
|
* CLOSE THE RECORD PANEL (grids review 3, lane H item 5): Escape on the grid, and Space on the row
|
|
2210
2315
|
* that is already open, put it away — Airtable's expanded record toggles the same way. Unbound,
|
|
@@ -2221,7 +2326,7 @@ interface GridProps {
|
|
|
2221
2326
|
* (`custom.field_history`), and the host decides where the answer appears —
|
|
2222
2327
|
* a side panel, a window, a route. Unbound, the control is ABSENT, not dead.
|
|
2223
2328
|
*/
|
|
2224
|
-
onAskWhoChanged?: ((fieldKey: string, recordId: Uuid) => void) | undefined;
|
|
2329
|
+
onAskWhoChanged?: ((fieldKey: string, recordId: Uuid$1) => void) | undefined;
|
|
2225
2330
|
/**
|
|
2226
2331
|
* The host's whole-record form. Offered BY NAME when the store refuses an
|
|
2227
2332
|
* empty record — a Table with a required Field cannot be added to one cell at
|
|
@@ -2314,7 +2419,7 @@ interface RecordsTableCardProps {
|
|
|
2314
2419
|
*/
|
|
2315
2420
|
source: {
|
|
2316
2421
|
kind: "table";
|
|
2317
|
-
id: Uuid
|
|
2422
|
+
id: Uuid;
|
|
2318
2423
|
} | {
|
|
2319
2424
|
kind: "entity";
|
|
2320
2425
|
token: string;
|
|
@@ -2331,7 +2436,7 @@ interface RecordsTableCardProps {
|
|
|
2331
2436
|
initialRows?: number;
|
|
2332
2437
|
headingLevel?: 2 | 3;
|
|
2333
2438
|
/** Opened from a row. The host's record page, when it has one. */
|
|
2334
|
-
onOpenRecord?: (recordId: Uuid
|
|
2439
|
+
onOpenRecord?: (recordId: Uuid) => void;
|
|
2335
2440
|
/** Cells editable in place (the Grid's own rule still applies per field and per right). */
|
|
2336
2441
|
editable?: boolean;
|
|
2337
2442
|
className?: string;
|
|
@@ -2389,7 +2494,7 @@ declare function useRecordLabels(fields: readonly Field$1[] | undefined): LabelL
|
|
|
2389
2494
|
declare function useLabelWait(field: Field$1 | undefined): string | null;
|
|
2390
2495
|
|
|
2391
2496
|
interface ExportMenuProps {
|
|
2392
|
-
tableId: Uuid;
|
|
2497
|
+
tableId: Uuid$1;
|
|
2393
2498
|
/** The rows on screen. Absent means "this table's first page", read the same way. */
|
|
2394
2499
|
rows?: ReadRow$1[] | undefined;
|
|
2395
2500
|
/** What the file is called. The table's name by default. */
|
|
@@ -2446,7 +2551,7 @@ interface ImportSource {
|
|
|
2446
2551
|
text: string;
|
|
2447
2552
|
}
|
|
2448
2553
|
interface ImportWizardProps {
|
|
2449
|
-
tableId: Uuid;
|
|
2554
|
+
tableId: Uuid$1;
|
|
2450
2555
|
/** Rows to import instead of a file. When present the file control is not offered. */
|
|
2451
2556
|
source?: ImportSource | undefined;
|
|
2452
2557
|
/**
|
|
@@ -2477,7 +2582,7 @@ declare function ImportWizard({ tableId, source, onDone, onWrote, className }: I
|
|
|
2477
2582
|
/** The run a table's notice is about: the newest finished one that refused rows. */
|
|
2478
2583
|
declare function runToNotice(runs: ReadonlyArray<ImportRun>): ImportRun | null;
|
|
2479
2584
|
interface ImportNoticeProps {
|
|
2480
|
-
tableId: Uuid;
|
|
2585
|
+
tableId: Uuid$1;
|
|
2481
2586
|
/** Opens the import rail, where the run and its rows are listed. */
|
|
2482
2587
|
onOpenImport?: (() => void) | undefined;
|
|
2483
2588
|
/** Bumped by the host when an import just finished, so the notice re-reads. */
|
|
@@ -2554,9 +2659,9 @@ interface SaveToTableProps {
|
|
|
2554
2659
|
/** When the text holds several shapes, the one to open on (the one the person right-clicked). */
|
|
2555
2660
|
shapeIndex?: number | undefined;
|
|
2556
2661
|
/** Open a table (after it was made, or rows were added). Absent: no "Open" button is drawn. */
|
|
2557
|
-
onOpenTable?: ((tableId: Uuid) => void) | undefined;
|
|
2662
|
+
onOpenTable?: ((tableId: Uuid$1) => void) | undefined;
|
|
2558
2663
|
/** The rows landed — `new` when this screen made the table. */
|
|
2559
|
-
onSaved?: ((tableId: Uuid, how: "new" | "existing") => void) | undefined;
|
|
2664
|
+
onSaved?: ((tableId: Uuid$1, how: "new" | "existing") => void) | undefined;
|
|
2560
2665
|
/** The person is finished (the report's Done). */
|
|
2561
2666
|
onClose?: (() => void) | undefined;
|
|
2562
2667
|
className?: string | undefined;
|
|
@@ -2571,7 +2676,7 @@ interface CustomFieldsSectionProps {
|
|
|
2571
2676
|
/** The standard table's registered token (REC-33), e.g. `party`, `crm_deal`. */
|
|
2572
2677
|
entityToken: string;
|
|
2573
2678
|
/** The id of the row this page is showing. */
|
|
2574
|
-
recordId: Uuid;
|
|
2679
|
+
recordId: Uuid$1;
|
|
2575
2680
|
/** The heading. One row, no subtitle restating it. */
|
|
2576
2681
|
title?: string | undefined;
|
|
2577
2682
|
className?: string | undefined;
|
|
@@ -2608,7 +2713,7 @@ interface CustomFieldAddRequest {
|
|
|
2608
2713
|
}
|
|
2609
2714
|
type CustomFieldAddResult = {
|
|
2610
2715
|
ok: true;
|
|
2611
|
-
field_id: Uuid;
|
|
2716
|
+
field_id: Uuid$1;
|
|
2612
2717
|
label: string;
|
|
2613
2718
|
type: string;
|
|
2614
2719
|
} | {
|
|
@@ -2618,7 +2723,7 @@ type CustomFieldAddResult = {
|
|
|
2618
2723
|
/** What the section holds right now, in words an agent can act on. */
|
|
2619
2724
|
interface CustomFieldsAgentState {
|
|
2620
2725
|
entityToken: string;
|
|
2621
|
-
recordId: Uuid;
|
|
2726
|
+
recordId: Uuid$1;
|
|
2622
2727
|
/** The entity's own label ("Deal") once the rights read answered. */
|
|
2623
2728
|
entityLabel: string | null;
|
|
2624
2729
|
/** `null` while the rights read is in flight. */
|
|
@@ -2655,7 +2760,7 @@ type CustomFieldSetResult = {
|
|
|
2655
2760
|
};
|
|
2656
2761
|
interface CustomFieldsAgentDoor {
|
|
2657
2762
|
entityToken: string;
|
|
2658
|
-
recordId: Uuid;
|
|
2763
|
+
recordId: Uuid$1;
|
|
2659
2764
|
state: () => CustomFieldsAgentState;
|
|
2660
2765
|
/**
|
|
2661
2766
|
* Every problem with the request, all at once, or `[]`. Nothing is written.
|
|
@@ -2859,7 +2964,7 @@ interface FieldEditorCommon {
|
|
|
2859
2964
|
* custom-table doors.
|
|
2860
2965
|
*/
|
|
2861
2966
|
type FieldEditorProps = FieldEditorCommon & ({
|
|
2862
|
-
tableId: Uuid
|
|
2967
|
+
tableId: Uuid;
|
|
2863
2968
|
entityToken?: undefined;
|
|
2864
2969
|
/** The Field being edited. Absent means a new one. */
|
|
2865
2970
|
field?: Field | undefined;
|
|
@@ -2899,7 +3004,7 @@ declare const NO_RULES_YET = "Nothing has to be true to get here yet.";
|
|
|
2899
3004
|
declare const NEEDS_A_SENTENCE = "Write the sentence somebody reads when this stops them, the way you would say it out loud.";
|
|
2900
3005
|
declare const NOT_DRAWN_HERE = "This part of the rule is not something this builder can draw yet";
|
|
2901
3006
|
interface StageRulesSectionProps {
|
|
2902
|
-
tableId: Uuid;
|
|
3007
|
+
tableId: Uuid$1;
|
|
2903
3008
|
/** Which stage's rules to edit. Left out, the section opens on the first stage. */
|
|
2904
3009
|
stage?: string | undefined;
|
|
2905
3010
|
className?: string | undefined;
|
|
@@ -3023,7 +3128,7 @@ declare const TABLE_NAME_MAX = 120;
|
|
|
3023
3128
|
/** Why a typed table name cannot be kept, or null when it can. */
|
|
3024
3129
|
declare function tableNameProblem(typed: string): string | null;
|
|
3025
3130
|
declare function TableRenameDialog({ tableId, name, open, onOpenChange, onRenamed, }: {
|
|
3026
|
-
tableId: Uuid
|
|
3131
|
+
tableId: Uuid;
|
|
3027
3132
|
/** The table's name as it is kept now. */
|
|
3028
3133
|
name: string;
|
|
3029
3134
|
open: boolean;
|
|
@@ -3055,7 +3160,7 @@ interface FieldProposalRow {
|
|
|
3055
3160
|
proposed_by: string;
|
|
3056
3161
|
}
|
|
3057
3162
|
interface TableSettingsProps {
|
|
3058
|
-
tableId: Uuid;
|
|
3163
|
+
tableId: Uuid$1;
|
|
3059
3164
|
/**
|
|
3060
3165
|
* SCR-5. Pending field proposals. The door that lists them
|
|
3061
3166
|
* (`custom.field_propose`) does not exist yet — `@ai-matrx/records` answers
|
|
@@ -3079,20 +3184,24 @@ interface TableSettingsProps {
|
|
|
3079
3184
|
columns?: ColumnsLook | undefined;
|
|
3080
3185
|
className?: string | undefined;
|
|
3081
3186
|
}
|
|
3082
|
-
|
|
3187
|
+
/**
|
|
3188
|
+
* THE PANEL, AND WHAT AN AGENT MAY SEE AND STAGE IN IT. A host that binds `settingsAgent` is handed
|
|
3189
|
+
* the panel's agent (what it shows, three staging calls) and wraps the panel in its own surface.
|
|
3190
|
+
*/
|
|
3191
|
+
declare function TableSettings(props: TableSettingsProps): react.JSX.Element;
|
|
3083
3192
|
|
|
3084
3193
|
/** Whether a Table document marks the table as Foundation. Absent is no — the store's own rule. */
|
|
3085
3194
|
declare function isFoundationTable(table: Pick<Table, "foundation"> | {
|
|
3086
3195
|
foundation?: unknown;
|
|
3087
3196
|
} | null | undefined): boolean;
|
|
3088
3197
|
declare function TableFoundationSwitch({ tableId, table }: {
|
|
3089
|
-
tableId: Uuid
|
|
3198
|
+
tableId: Uuid;
|
|
3090
3199
|
table: Table;
|
|
3091
3200
|
}): react.JSX.Element;
|
|
3092
3201
|
|
|
3093
3202
|
interface PeekProps {
|
|
3094
|
-
tableId: Uuid;
|
|
3095
|
-
recordId: Uuid;
|
|
3203
|
+
tableId: Uuid$1;
|
|
3204
|
+
recordId: Uuid$1;
|
|
3096
3205
|
onClose?: (() => void) | undefined;
|
|
3097
3206
|
className?: string | undefined;
|
|
3098
3207
|
/**
|
|
@@ -3123,11 +3232,11 @@ declare function standardTokenOf(token: string): string;
|
|
|
3123
3232
|
interface StandardRecordFormProps {
|
|
3124
3233
|
/** The standard table, by registry token: `entity:party` (or the bare `party`). */
|
|
3125
3234
|
token: string;
|
|
3126
|
-
recordId: Uuid;
|
|
3235
|
+
recordId: Uuid$1;
|
|
3127
3236
|
/** The row's own columns, in the order shown. */
|
|
3128
3237
|
columns: readonly StandardColumn[];
|
|
3129
3238
|
/** Called after a value was saved, so the host re-reads what it shows elsewhere (a title). */
|
|
3130
|
-
onSaved?: ((recordId: Uuid) => void) | undefined;
|
|
3239
|
+
onSaved?: ((recordId: Uuid$1) => void) | undefined;
|
|
3131
3240
|
className?: string | undefined;
|
|
3132
3241
|
/** The custom-fields half: its heading and the host's doors (agent door, own-table offer, noun). */
|
|
3133
3242
|
custom?: Omit<CustomFieldsSectionProps, "entityToken" | "recordId" | "className"> | undefined;
|
|
@@ -3138,7 +3247,7 @@ declare function StandardRecordForm({ token, recordId, columns, onSaved, classNa
|
|
|
3138
3247
|
|
|
3139
3248
|
interface RecordFormProps {
|
|
3140
3249
|
/** A CUSTOM table's id. Give `token` instead for a row of a standard table. */
|
|
3141
|
-
tableId?: Uuid | undefined;
|
|
3250
|
+
tableId?: Uuid$1 | undefined;
|
|
3142
3251
|
/**
|
|
3143
3252
|
* STANDARD-TABLE MODE (FTS-2b wave 6): a registry token, `entity:party` (or the bare `party`).
|
|
3144
3253
|
* The form reads and writes that row through the store's standard-row doors, as the person —
|
|
@@ -3153,10 +3262,10 @@ interface RecordFormProps {
|
|
|
3153
3262
|
/** Standard mode: the host's own controls on this row, between the columns and the custom fields. */
|
|
3154
3263
|
children?: ReactNode;
|
|
3155
3264
|
/** Absent means "create". Present means "edit that record". */
|
|
3156
|
-
recordId?: Uuid | undefined;
|
|
3265
|
+
recordId?: Uuid$1 | undefined;
|
|
3157
3266
|
/** FLD-10: which Fields apply is the store's decision, and it takes the record type. */
|
|
3158
3267
|
recordType?: string | undefined;
|
|
3159
|
-
onSaved?: ((recordId: Uuid) => void) | undefined;
|
|
3268
|
+
onSaved?: ((recordId: Uuid$1) => void) | undefined;
|
|
3160
3269
|
onCancel?: (() => void) | undefined;
|
|
3161
3270
|
className?: string | undefined;
|
|
3162
3271
|
/**
|
|
@@ -3647,7 +3756,7 @@ declare function pickableTypeOf(field: Field): PickableFieldType | undefined;
|
|
|
3647
3756
|
declare function fieldTypeLabel(field: Field): string;
|
|
3648
3757
|
|
|
3649
3758
|
/** The one token form, written the way the store's own pattern reads it. */
|
|
3650
|
-
declare function fieldToken(fieldId: Uuid
|
|
3759
|
+
declare function fieldToken(fieldId: Uuid): string;
|
|
3651
3760
|
/** THE DECLARATIVE SPEC an agent writes. One template, whole, in one object. */
|
|
3652
3761
|
interface DocTemplateSpec {
|
|
3653
3762
|
name: string;
|
|
@@ -3786,7 +3895,7 @@ interface SystemFieldSpec {
|
|
|
3786
3895
|
* every organization's first load, which is the class this file just cost us.
|
|
3787
3896
|
*/
|
|
3788
3897
|
options?: string[];
|
|
3789
|
-
relationTarget?: Uuid
|
|
3898
|
+
relationTarget?: Uuid;
|
|
3790
3899
|
expr?: Record<string, unknown>;
|
|
3791
3900
|
}
|
|
3792
3901
|
interface SystemTableSpec {
|
|
@@ -3801,13 +3910,13 @@ interface SystemTableSpec {
|
|
|
3801
3910
|
/** Find this organization's copy of a package-owned Table, declaring it the first time. */
|
|
3802
3911
|
declare function ensureSystemTable(client: RecordsClient, spec: SystemTableSpec): Promise<{
|
|
3803
3912
|
ok: true;
|
|
3804
|
-
data: Uuid
|
|
3913
|
+
data: Uuid;
|
|
3805
3914
|
} | {
|
|
3806
3915
|
ok: false;
|
|
3807
3916
|
error: RecordsError;
|
|
3808
3917
|
}>;
|
|
3809
3918
|
interface UseSystemTableState {
|
|
3810
|
-
tableId: Uuid
|
|
3919
|
+
tableId: Uuid | null;
|
|
3811
3920
|
loading: boolean;
|
|
3812
3921
|
error: RecordsError | null;
|
|
3813
3922
|
}
|
|
@@ -3844,7 +3953,7 @@ declare function archiveConfirmSentence(what: string): string;
|
|
|
3844
3953
|
interface AnnounceTableArchived {
|
|
3845
3954
|
notify: RecordsUiHost["notify"];
|
|
3846
3955
|
client: Pick<RecordsClient, "tableRestoreWhole">;
|
|
3847
|
-
tableId: Uuid
|
|
3956
|
+
tableId: Uuid;
|
|
3848
3957
|
/** The table's name as the store gave it. */
|
|
3849
3958
|
name: string;
|
|
3850
3959
|
/** Called once the table is back, so the surface can show it again. */
|
|
@@ -3884,9 +3993,9 @@ declare function saveToViewPlan(view: SavedView, look: ViewLook): {
|
|
|
3884
3993
|
left: ViewLook | null;
|
|
3885
3994
|
};
|
|
3886
3995
|
/** The caller's own looks at every view of a table, by view id. */
|
|
3887
|
-
declare function readLooks(client: Pick<RecordsClient, "viewLookRead">, tableId: Uuid
|
|
3996
|
+
declare function readLooks(client: Pick<RecordsClient, "viewLookRead">, tableId: Uuid): Promise<RecordsResult<Record<string, ViewLook>>>;
|
|
3888
3997
|
/** Keep the whole look (null: "Reset to view"). The shared view is never written. */
|
|
3889
|
-
declare function keepLook(client: Pick<RecordsClient, "viewLookSet">, tableId: Uuid
|
|
3998
|
+
declare function keepLook(client: Pick<RecordsClient, "viewLookSet">, tableId: Uuid, viewId: Uuid, look: ViewLook | null): Promise<RecordsResult<Record<string, unknown> | null>>;
|
|
3890
3999
|
/** The words of the look bar. One sentence, then the doors. */
|
|
3891
4000
|
declare const LOOK_WORDS: {
|
|
3892
4001
|
/** The reason, for a tooltip or a screen reader — never a line on the page (interface-text). */
|
|
@@ -3921,9 +4030,9 @@ interface ViewSwitcherProps {
|
|
|
3921
4030
|
* and the screen says the choice is not being kept.
|
|
3922
4031
|
*/
|
|
3923
4032
|
onViewChange?: ((patch: Partial<SavedViewSpec>) => void) | undefined;
|
|
3924
|
-
onOpenRecord?: ((recordId: Uuid) => void) | undefined;
|
|
4033
|
+
onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
|
|
3925
4034
|
/** The record the host has open beside a grid, which the grid's panel then follows (`Grid.openRecordId`). */
|
|
3926
|
-
openRecordId?: Uuid | null | undefined;
|
|
4035
|
+
openRecordId?: Uuid$1 | null | undefined;
|
|
3927
4036
|
/** Put the record panel away (Escape, or Space on the open row): `Grid.onCloseRecord`. */
|
|
3928
4037
|
onCloseRecord?: (() => void) | undefined;
|
|
3929
4038
|
/**
|
|
@@ -3935,7 +4044,7 @@ interface ViewSwitcherProps {
|
|
|
3935
4044
|
/** The host's whole-record form, offered by the grid when an empty record is refused. */
|
|
3936
4045
|
onNewRecordForm?: (() => void) | undefined;
|
|
3937
4046
|
/** "Who changed this?" from a grid cell — the host opens that column's timeline. */
|
|
3938
|
-
onAskWhoChanged?: ((fieldKey: string, recordId: Uuid) => void) | undefined;
|
|
4047
|
+
onAskWhoChanged?: ((fieldKey: string, recordId: Uuid$1) => void) | undefined;
|
|
3939
4048
|
pageSize?: number | undefined;
|
|
3940
4049
|
/**
|
|
3941
4050
|
* THE TABLE'S OWN TITLE COLUMN (`title_field`, REC-2), from the table the host already holds.
|
|
@@ -3980,7 +4089,7 @@ interface ViewSwitcherProps {
|
|
|
3980
4089
|
* it (`custom.view_record_order_set`, Reorder → Save) through it. Left out — a literal spec —
|
|
3981
4090
|
* the view has no hand order and the grid offers no Reorder.
|
|
3982
4091
|
*/
|
|
3983
|
-
viewId?: Uuid | null | undefined;
|
|
4092
|
+
viewId?: Uuid$1 | null | undefined;
|
|
3984
4093
|
/**
|
|
3985
4094
|
* The rows were placed by hand: the store made this view manual and removed its sort. The host
|
|
3986
4095
|
* updates the view it holds (nothing is written — the store already did).
|
|
@@ -4012,7 +4121,7 @@ interface ViewSwitcherProps {
|
|
|
4012
4121
|
className?: string | undefined;
|
|
4013
4122
|
}
|
|
4014
4123
|
/** The records this view holds: its Rule's members when it names one, the table otherwise. */
|
|
4015
|
-
declare function useViewRecords(view: SavedViewSpec, pageSize?: number, filter?: StoreFilter, viewId?: Uuid | null): {
|
|
4124
|
+
declare function useViewRecords(view: SavedViewSpec, pageSize?: number, filter?: StoreFilter, viewId?: Uuid$1 | null): {
|
|
4016
4125
|
rows: ReadRow$1[];
|
|
4017
4126
|
manual: boolean;
|
|
4018
4127
|
/** How many records the view holds, as the store counted them (null when it did not count). */
|
|
@@ -4043,7 +4152,7 @@ declare function ViewSwitcher({ view, onLayoutChange, onViewChange, onOpenRecord
|
|
|
4043
4152
|
type CalendarMode = "month" | "week" | "day" | "list";
|
|
4044
4153
|
interface CalendarViewProps {
|
|
4045
4154
|
/** The table the records live in — the undo history's table, and where a new record is made. */
|
|
4046
|
-
tableId: Uuid;
|
|
4155
|
+
tableId: Uuid$1;
|
|
4047
4156
|
rows: readonly ReadRow$1[];
|
|
4048
4157
|
/** The column a record's day (and, when it carries one, its time) is read from and written to. */
|
|
4049
4158
|
dateField: Field$1;
|
|
@@ -4064,7 +4173,7 @@ interface CalendarViewProps {
|
|
|
4064
4173
|
endKept?: boolean | undefined;
|
|
4065
4174
|
/** The column that names each card (`cardTitleField`). */
|
|
4066
4175
|
titleField: Field$1 | undefined;
|
|
4067
|
-
onOpenRecord?: ((recordId: Uuid) => void) | undefined;
|
|
4176
|
+
onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
|
|
4068
4177
|
/** A move landed (or was undone, or refused): the host re-reads the rows it owns. */
|
|
4069
4178
|
onMoved?: (() => void) | undefined;
|
|
4070
4179
|
/** The person picked a Colour by column: the host keeps it on the view (`presentation.style.colorBy`). */
|
|
@@ -4115,7 +4224,7 @@ interface TimelineViewProps {
|
|
|
4115
4224
|
/** The fields each bar shows after its title (the view's Card fields, v7 item 4). */
|
|
4116
4225
|
cardFields?: readonly Field$1[] | undefined;
|
|
4117
4226
|
/** The table the records live in — the undo history's table. */
|
|
4118
|
-
tableId: Uuid;
|
|
4227
|
+
tableId: Uuid$1;
|
|
4119
4228
|
rows: readonly ReadRow$1[];
|
|
4120
4229
|
/** The table's columns: the pickers, the lanes and the colours read them. */
|
|
4121
4230
|
fields: readonly Field$1[];
|
|
@@ -4135,7 +4244,7 @@ interface TimelineViewProps {
|
|
|
4135
4244
|
onSettingsChange?: ((patch: Partial<TimelineSettings>) => void) | undefined;
|
|
4136
4245
|
/** False when the host cannot keep the layout or the End on the view: the toolbar says so. */
|
|
4137
4246
|
layoutKept?: boolean | undefined;
|
|
4138
|
-
onOpenRecord?: ((recordId: Uuid) => void) | undefined;
|
|
4247
|
+
onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
|
|
4139
4248
|
/** A move landed (or was undone): the host re-reads the rows it owns. */
|
|
4140
4249
|
onMoved?: (() => void) | undefined;
|
|
4141
4250
|
/** The view's membership sentence (`useViewRecords().membership`). */
|
|
@@ -4158,7 +4267,7 @@ declare function useRowColorBy(all: readonly Field$1[], colorKey: string | null,
|
|
|
4158
4267
|
|
|
4159
4268
|
/** One cell a change touched: its value before and after, by Field key. */
|
|
4160
4269
|
interface TouchedCell {
|
|
4161
|
-
rowId: Uuid
|
|
4270
|
+
rowId: Uuid;
|
|
4162
4271
|
key: string;
|
|
4163
4272
|
before: unknown;
|
|
4164
4273
|
after: unknown;
|
|
@@ -4176,9 +4285,9 @@ interface GridUndoStep {
|
|
|
4176
4285
|
label: string;
|
|
4177
4286
|
cells: TouchedCell[];
|
|
4178
4287
|
/** Records this change created — undo archives them. */
|
|
4179
|
-
created?: Uuid
|
|
4288
|
+
created?: Uuid[] | undefined;
|
|
4180
4289
|
/** Records this change archived — undo restores them. */
|
|
4181
|
-
archived?: Uuid
|
|
4290
|
+
archived?: Uuid[] | undefined;
|
|
4182
4291
|
/** The after-values are the store's own (a row action worked them out), so it cannot be redone. */
|
|
4183
4292
|
noRedo?: boolean | undefined;
|
|
4184
4293
|
/**
|
|
@@ -4187,7 +4296,7 @@ interface GridUndoStep {
|
|
|
4187
4296
|
* delete was no step at all, so Cmd-Z after it silently undid the OLDER cell edit beneath it.
|
|
4188
4297
|
*/
|
|
4189
4298
|
retiredField?: {
|
|
4190
|
-
fieldId: Uuid
|
|
4299
|
+
fieldId: Uuid;
|
|
4191
4300
|
} | undefined;
|
|
4192
4301
|
}
|
|
4193
4302
|
interface GridUndo {
|
|
@@ -4213,7 +4322,7 @@ interface GridUndo {
|
|
|
4213
4322
|
* Say something beside the last step without a step. `sticky` (a paste the store refused, a
|
|
4214
4323
|
* read-back that came up short) stays until dismissed; otherwise it leaves by itself.
|
|
4215
4324
|
*/
|
|
4216
|
-
say: (says: string, sticky?: boolean) => void;
|
|
4325
|
+
say: (says: string, sticky?: boolean, offerUndo?: boolean) => void;
|
|
4217
4326
|
}
|
|
4218
4327
|
|
|
4219
4328
|
/** What one write answered: done (with the version it made), or the store's refusal. */
|
|
@@ -4229,7 +4338,7 @@ type MoveWritten = {
|
|
|
4229
4338
|
* means the caller does not know it — the write is then NOT sent, because a write with no version
|
|
4230
4339
|
* is a write that can overwrite a colleague (said as a refusal, never silently).
|
|
4231
4340
|
*/
|
|
4232
|
-
declare function moveRecordValue(client: Pick<ReturnType<typeof useRecordsClient>, "recordUpdate" | "recordUpdateAddingChoices">, recordId: Uuid
|
|
4341
|
+
declare function moveRecordValue(client: Pick<ReturnType<typeof useRecordsClient>, "recordUpdate" | "recordUpdateAddingChoices">, recordId: Uuid, patch: Record<string, unknown>, expectedVersion: number | null): Promise<MoveWritten>;
|
|
4233
4342
|
interface RecordMoves {
|
|
4234
4343
|
/**
|
|
4235
4344
|
* Move one record: `patch` is the new values by Field key, `before` the values it held (read from
|
|
@@ -4237,20 +4346,20 @@ interface RecordMoves {
|
|
|
4237
4346
|
* Answers whether the store took it.
|
|
4238
4347
|
*/
|
|
4239
4348
|
move: (args: {
|
|
4240
|
-
recordId: Uuid
|
|
4349
|
+
recordId: Uuid;
|
|
4241
4350
|
patch: Record<string, unknown>;
|
|
4242
4351
|
before: Record<string, unknown>;
|
|
4243
4352
|
label: string;
|
|
4244
4353
|
}) => Promise<boolean>;
|
|
4245
4354
|
/** Make one record from a gesture (a click on a day, a drag across hours): ONE write, one undo step. */
|
|
4246
4355
|
create: (args: {
|
|
4247
|
-
tableId: Uuid
|
|
4356
|
+
tableId: Uuid;
|
|
4248
4357
|
data: Record<string, unknown>;
|
|
4249
4358
|
label: string;
|
|
4250
|
-
}) => Promise<Uuid
|
|
4359
|
+
}) => Promise<Uuid | null>;
|
|
4251
4360
|
/** The refusal the store gave the last move, and the record it is about — a badge on that card. */
|
|
4252
4361
|
refused: {
|
|
4253
|
-
recordId: Uuid
|
|
4362
|
+
recordId: Uuid;
|
|
4254
4363
|
error: RecordsError;
|
|
4255
4364
|
changedElsewhere: boolean;
|
|
4256
4365
|
unread?: boolean | undefined;
|
|
@@ -4265,7 +4374,7 @@ interface RecordMoves {
|
|
|
4265
4374
|
notice: ReactElement;
|
|
4266
4375
|
}
|
|
4267
4376
|
declare function useRecordMoves({ tableId, rows, onMoved, }: {
|
|
4268
|
-
tableId: Uuid
|
|
4377
|
+
tableId: Uuid;
|
|
4269
4378
|
/** The rows the layout drew — their versions are what a move is written against. */
|
|
4270
4379
|
rows: readonly ReadRow[];
|
|
4271
4380
|
onMoved?: (() => void) | undefined;
|
|
@@ -4278,7 +4387,7 @@ declare function mayNotRestoreLine(why: string): string;
|
|
|
4278
4387
|
/** What one row in the archive says, as one string — pulled out so the guard can read it. */
|
|
4279
4388
|
declare function archivedRowLine(row: ArchivedRow, titleKey?: string | null): string;
|
|
4280
4389
|
interface ArchivedViewProps {
|
|
4281
|
-
tableId: Uuid
|
|
4390
|
+
tableId: Uuid;
|
|
4282
4391
|
/** Rows per page. The store refuses above its own ceiling by name rather than quietly serving fewer. */
|
|
4283
4392
|
pageSize?: number | undefined;
|
|
4284
4393
|
/** Which lane the address or the host asked for. Absent, the organization's. */
|
|
@@ -4286,7 +4395,7 @@ interface ArchivedViewProps {
|
|
|
4286
4395
|
/** Called when the person switches lane, so the host can put it in the URL. */
|
|
4287
4396
|
onLaneChange?: ((lane: ArchiveLane) => void) | undefined;
|
|
4288
4397
|
/** Called after a record comes back, so the host re-reads the rows it owns. */
|
|
4289
|
-
onRestored?: ((recordId: Uuid
|
|
4398
|
+
onRestored?: ((recordId: Uuid) => void) | undefined;
|
|
4290
4399
|
className?: string | undefined;
|
|
4291
4400
|
}
|
|
4292
4401
|
declare function ArchivedView({ tableId, pageSize, lane: laneFromHost, onLaneChange, onRestored, className, }: ArchivedViewProps): react.JSX.Element;
|
|
@@ -4317,7 +4426,7 @@ interface ArchivedDisclosureProps {
|
|
|
4317
4426
|
declare function ArchivedDisclosure({ noun, count, defaultOpen, onOpenChange, children, className, }: ArchivedDisclosureProps): react.JSX.Element;
|
|
4318
4427
|
interface ArchivedPortalsProps {
|
|
4319
4428
|
/** Called after a portal comes back, so the rail re-reads the list it owns. */
|
|
4320
|
-
onRestored?: ((portalId: Uuid) => void) | undefined;
|
|
4429
|
+
onRestored?: ((portalId: Uuid$1) => void) | undefined;
|
|
4321
4430
|
/**
|
|
4322
4431
|
* Bumped by the surface above whenever IT changed something that lands here —
|
|
4323
4432
|
* archiving a portal from the live rail, most of all. Without it an archive
|
|
@@ -4342,9 +4451,9 @@ declare function ArchivedPortals({ onRestored, refreshToken, defaultOpen, classN
|
|
|
4342
4451
|
|
|
4343
4452
|
interface ViewBarProps {
|
|
4344
4453
|
/** The Table whose views these are. */
|
|
4345
|
-
tableId: Uuid;
|
|
4454
|
+
tableId: Uuid$1;
|
|
4346
4455
|
/** The view that is showing. Leave it out and the bar picks the default, then the first. */
|
|
4347
|
-
activeViewId?: Uuid | null | undefined;
|
|
4456
|
+
activeViewId?: Uuid$1 | null | undefined;
|
|
4348
4457
|
onActiveView?: ((view: SavedView) => void) | undefined;
|
|
4349
4458
|
/**
|
|
4350
4459
|
* COMPLETE DECLARATIVE SPECS an agent wrote. Any of these whose name this
|
|
@@ -4387,9 +4496,9 @@ interface ProposedChange {
|
|
|
4387
4496
|
* required field a caller cannot fill is a field that gets filled with
|
|
4388
4497
|
* something untrue.
|
|
4389
4498
|
*/
|
|
4390
|
-
table?: Uuid | undefined;
|
|
4499
|
+
table?: Uuid$1 | undefined;
|
|
4391
4500
|
/** The record it changes. Required for `update` and `remove`. */
|
|
4392
|
-
record?: Uuid | undefined;
|
|
4501
|
+
record?: Uuid$1 | undefined;
|
|
4393
4502
|
/** The document for `add`, or the patch for `update`. */
|
|
4394
4503
|
data?: Record<string, unknown> | undefined;
|
|
4395
4504
|
/**
|
|
@@ -4463,19 +4572,19 @@ interface ActionInboxProps {
|
|
|
4463
4572
|
* (lane S5-PRIME), so this narrows approvals, proposals and assignments alike;
|
|
4464
4573
|
* when the table has nothing, the inbox says how many wait elsewhere and offers them.
|
|
4465
4574
|
*/
|
|
4466
|
-
tableId?: Uuid | null | undefined;
|
|
4575
|
+
tableId?: Uuid$1 | null | undefined;
|
|
4467
4576
|
/** Show decided rows too, from the start. `h` (or the button) toggles it. */
|
|
4468
4577
|
includeSettled?: boolean | undefined;
|
|
4469
4578
|
/** How the rows start out grouped. Default: by kind. */
|
|
4470
4579
|
defaultGroupBy?: InboxGrouping | undefined;
|
|
4471
|
-
onOpenRecord?: ((recordId: Uuid, tableId: Uuid) => void) | undefined;
|
|
4580
|
+
onOpenRecord?: ((recordId: Uuid$1, tableId: Uuid$1) => void) | undefined;
|
|
4472
4581
|
className?: string | undefined;
|
|
4473
4582
|
}
|
|
4474
4583
|
declare function ActionInbox({ tableId, includeSettled, defaultGroupBy, onOpenRecord, className, }: ActionInboxProps): react.JSX.Element;
|
|
4475
4584
|
|
|
4476
4585
|
interface HistoryPanelProps {
|
|
4477
|
-
tableId: Uuid;
|
|
4478
|
-
recordId: Uuid;
|
|
4586
|
+
tableId: Uuid$1;
|
|
4587
|
+
recordId: Uuid$1;
|
|
4479
4588
|
/**
|
|
4480
4589
|
* "Who changed THIS column?" — the host opens that field's own timeline. Left
|
|
4481
4590
|
* out, the per-field control is absent rather than dead.
|
|
@@ -4487,9 +4596,9 @@ declare function HistoryPanel({ tableId, recordId, onAskAboutField, className }:
|
|
|
4487
4596
|
|
|
4488
4597
|
interface CommentThreadProps {
|
|
4489
4598
|
/** The Table the commented-on record belongs to — its Fields name an anchor. */
|
|
4490
|
-
tableId: Uuid;
|
|
4599
|
+
tableId: Uuid$1;
|
|
4491
4600
|
/** The record being discussed. */
|
|
4492
|
-
recordId: Uuid;
|
|
4601
|
+
recordId: Uuid$1;
|
|
4493
4602
|
/** Open on the thread about ONE column, and post there by default. */
|
|
4494
4603
|
fieldKey?: string | undefined;
|
|
4495
4604
|
className?: string | undefined;
|
|
@@ -4497,15 +4606,15 @@ interface CommentThreadProps {
|
|
|
4497
4606
|
declare function CommentThread({ tableId, recordId, fieldKey, className }: CommentThreadProps): react.JSX.Element;
|
|
4498
4607
|
|
|
4499
4608
|
interface FieldHistoryPanelProps {
|
|
4500
|
-
tableId: Uuid;
|
|
4609
|
+
tableId: Uuid$1;
|
|
4501
4610
|
/** The column being asked about, by its key. */
|
|
4502
4611
|
fieldKey: string;
|
|
4503
4612
|
/** Scoped to ONE record when present; the whole Table when absent. */
|
|
4504
|
-
recordId?: Uuid | undefined;
|
|
4613
|
+
recordId?: Uuid$1 | undefined;
|
|
4505
4614
|
/** The host's way back — a cell menu opens this, so it closes too. */
|
|
4506
4615
|
onClose?: (() => void) | undefined;
|
|
4507
4616
|
/** Open a record from one of its rows. Absent, the row is not a link. */
|
|
4508
|
-
onOpenRecord?: ((recordId: Uuid) => void) | undefined;
|
|
4617
|
+
onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
|
|
4509
4618
|
className?: string | undefined;
|
|
4510
4619
|
}
|
|
4511
4620
|
declare function FieldHistoryPanel({ tableId, fieldKey, recordId, onClose, onOpenRecord, className, }: FieldHistoryPanelProps): react.JSX.Element;
|
|
@@ -4545,8 +4654,8 @@ interface FormTheme {
|
|
|
4545
4654
|
*/
|
|
4546
4655
|
interface FormLook {
|
|
4547
4656
|
accent?: PortalAccent | null;
|
|
4548
|
-
logoFileId?: Uuid
|
|
4549
|
-
coverFileId?: Uuid
|
|
4657
|
+
logoFileId?: Uuid | null;
|
|
4658
|
+
coverFileId?: Uuid | null;
|
|
4550
4659
|
}
|
|
4551
4660
|
/** The screen after sending: the form's words, and optionally where to go next. */
|
|
4552
4661
|
interface FormThankYou {
|
|
@@ -4559,7 +4668,7 @@ interface FormThankYou {
|
|
|
4559
4668
|
interface FormSpec {
|
|
4560
4669
|
name: string;
|
|
4561
4670
|
/** The Table a submission lands in. */
|
|
4562
|
-
subject: Uuid
|
|
4671
|
+
subject: Uuid;
|
|
4563
4672
|
intro?: string | null;
|
|
4564
4673
|
questions: FormQuestionSpec[];
|
|
4565
4674
|
flow?: FormFlow | null;
|
|
@@ -4595,7 +4704,7 @@ interface FormSpec {
|
|
|
4595
4704
|
* read here and handed straight back by `formDeclareArgs`.
|
|
4596
4705
|
*/
|
|
4597
4706
|
interface SavedForm extends FormSpec {
|
|
4598
|
-
id: Uuid
|
|
4707
|
+
id: Uuid;
|
|
4599
4708
|
/** draft · open · closed · full — the store's own word, never derived on a screen. */
|
|
4600
4709
|
state: FormSummary["state"];
|
|
4601
4710
|
/** The form's readable name in the store. `form_declare` keeps it across saves. */
|
|
@@ -4603,9 +4712,9 @@ interface SavedForm extends FormSpec {
|
|
|
4603
4712
|
/** Stops taking answers at this many. Null is no ceiling. */
|
|
4604
4713
|
submissionCap: number | null;
|
|
4605
4714
|
/** The accept Rule: what counts as a complete answer. Null holds every answer for a person. */
|
|
4606
|
-
quarantineRuleId: Uuid
|
|
4715
|
+
quarantineRuleId: Uuid | null;
|
|
4607
4716
|
/** The subscription Rule that tells somebody an answer arrived. */
|
|
4608
|
-
notifyRuleId: Uuid
|
|
4717
|
+
notifyRuleId: Uuid | null;
|
|
4609
4718
|
}
|
|
4610
4719
|
/**
|
|
4611
4720
|
* The spec as `custom.anon_form.presentation` holds it.
|
|
@@ -4621,14 +4730,14 @@ declare function formLookDocument(look: FormLook | null): Record<string, unknown
|
|
|
4621
4730
|
declare function formLookFromDocument(raw: unknown): FormLook | null;
|
|
4622
4731
|
/** The exact arguments `custom.form_declare` is called with, for a new form or a re-statement. */
|
|
4623
4732
|
declare function formDeclareArgs(form: FormSpec | SavedForm): {
|
|
4624
|
-
table_id: Uuid
|
|
4733
|
+
table_id: Uuid;
|
|
4625
4734
|
title: string;
|
|
4626
4735
|
questions: FormQuestionSpec[];
|
|
4627
4736
|
presentation: Record<string, unknown>;
|
|
4628
4737
|
submission_cap: number | null;
|
|
4629
|
-
quarantine_rule_id: Uuid
|
|
4630
|
-
notify_rule_id: Uuid
|
|
4631
|
-
form_id: Uuid
|
|
4738
|
+
quarantine_rule_id: Uuid | null;
|
|
4739
|
+
notify_rule_id: Uuid | null;
|
|
4740
|
+
form_id: Uuid | null;
|
|
4632
4741
|
slug: string | null;
|
|
4633
4742
|
};
|
|
4634
4743
|
/** One row of `custom.forms` back into the spec a screen and an agent both read. */
|
|
@@ -4641,7 +4750,7 @@ declare function formFromSummary(summary: FormSummary): SavedForm;
|
|
|
4641
4750
|
* through export, History and the agent's context without a parallel table.
|
|
4642
4751
|
*/
|
|
4643
4752
|
declare function submissionStamp(args: {
|
|
4644
|
-
formId: Uuid
|
|
4753
|
+
formId: Uuid | null;
|
|
4645
4754
|
formName: string;
|
|
4646
4755
|
actor: string;
|
|
4647
4756
|
onBehalfOf?: string | null;
|
|
@@ -4652,10 +4761,10 @@ interface PortalBuilderProps {
|
|
|
4652
4761
|
* OPTIONAL. The Table whose rail this was opened from. It is pre-ticked as a
|
|
4653
4762
|
* Table to expose, because that is the thing the person was looking at.
|
|
4654
4763
|
*/
|
|
4655
|
-
tableId?: Uuid | null | undefined;
|
|
4764
|
+
tableId?: Uuid$1 | null | undefined;
|
|
4656
4765
|
/** Re-state an existing portal rather than making a second one. */
|
|
4657
|
-
portalId?: Uuid | null | undefined;
|
|
4658
|
-
onSaved?: ((portalId: Uuid) => void) | undefined;
|
|
4766
|
+
portalId?: Uuid$1 | null | undefined;
|
|
4767
|
+
onSaved?: ((portalId: Uuid$1) => void) | undefined;
|
|
4659
4768
|
onClose?: (() => void) | undefined;
|
|
4660
4769
|
className?: string | undefined;
|
|
4661
4770
|
}
|
|
@@ -4685,13 +4794,13 @@ interface PortalsPanelProps {
|
|
|
4685
4794
|
* Omit it and the rail is organization-wide again, which is right for a
|
|
4686
4795
|
* mount that is not standing on a table.
|
|
4687
4796
|
*/
|
|
4688
|
-
tableId?: Uuid | undefined;
|
|
4797
|
+
tableId?: Uuid$1 | undefined;
|
|
4689
4798
|
/**
|
|
4690
4799
|
* THE PORTAL A LINK NAMED (`?rail=portals&item=<portal>`, lane HUB-FIX). Its
|
|
4691
4800
|
* card opens on arrival and is scrolled to. A portal this table is not in is
|
|
4692
4801
|
* said out loud, never swapped for another portal.
|
|
4693
4802
|
*/
|
|
4694
|
-
activePortalId?: Uuid | null | undefined;
|
|
4803
|
+
activePortalId?: Uuid$1 | null | undefined;
|
|
4695
4804
|
className?: string | undefined;
|
|
4696
4805
|
}
|
|
4697
4806
|
/** What a door answered, for a view that never holds a client of its own. */
|
|
@@ -4726,11 +4835,11 @@ interface PortalCardViewProps {
|
|
|
4726
4835
|
/** Exactly what `custom.portal_card` answered. */
|
|
4727
4836
|
card: PortalCard;
|
|
4728
4837
|
/** The Table whose page this is on, if any — marked among the ones shown. */
|
|
4729
|
-
tableId?: Uuid | undefined;
|
|
4838
|
+
tableId?: Uuid$1 | undefined;
|
|
4730
4839
|
/** Take one person's way in away. Answers the door's own past-tense sentence. */
|
|
4731
4840
|
onRevoke: (person: PortalPrincipal) => Promise<PortalAnswer<string>>;
|
|
4732
4841
|
/** What this person sees on one Table — `custom.portal_preview`'s answer. */
|
|
4733
|
-
onPreview: (person: PortalPrincipal, tableId: Uuid) => Promise<PortalAnswer<PortalPreviewRow[]>>;
|
|
4842
|
+
onPreview: (person: PortalPrincipal, tableId: Uuid$1) => Promise<PortalAnswer<PortalPreviewRow[]>>;
|
|
4734
4843
|
/** The invite control, which needs a client of its own. Absent means none is offered. */
|
|
4735
4844
|
invite?: ReactNode;
|
|
4736
4845
|
/** S6 — the look-and-forms editor, which needs a client of its own. Absent means none is offered. */
|
|
@@ -4769,8 +4878,8 @@ interface PublicPicturePickerProps {
|
|
|
4769
4878
|
label: string;
|
|
4770
4879
|
/** The organization's public pictures, as the store listed them. */
|
|
4771
4880
|
pictures: readonly PublicPicture[];
|
|
4772
|
-
value: Uuid
|
|
4773
|
-
onChange: (fileId: Uuid
|
|
4881
|
+
value: Uuid | "" | null | undefined;
|
|
4882
|
+
onChange: (fileId: Uuid | "") => void;
|
|
4774
4883
|
/** The words on the empty choice ("Organization logo", "No cover"). */
|
|
4775
4884
|
noneLabel: string;
|
|
4776
4885
|
className?: string | undefined;
|
|
@@ -4812,13 +4921,13 @@ declare function FormLookFrame({ look, title, children, contained, className }:
|
|
|
4812
4921
|
|
|
4813
4922
|
interface DigestSchedulerProps {
|
|
4814
4923
|
/** The Table the digest is about. A saved view is a view OF something. */
|
|
4815
|
-
tableId: Uuid;
|
|
4924
|
+
tableId: Uuid$1;
|
|
4816
4925
|
/**
|
|
4817
4926
|
* The view to subscribe over, when the caller already has one — a dashboard
|
|
4818
4927
|
* passes the view its blocks are filtered by. Left out, the person picks one
|
|
4819
4928
|
* of this Table's saved views or this screen saves a new one for them.
|
|
4820
4929
|
*/
|
|
4821
|
-
savedViewId?: Uuid | null | undefined;
|
|
4930
|
+
savedViewId?: Uuid$1 | null | undefined;
|
|
4822
4931
|
/**
|
|
4823
4932
|
* What the person is looking at, in their words — a dashboard's name, a view's
|
|
4824
4933
|
* name. It becomes the digest's name and, when a view has to be saved, the
|
|
@@ -4848,14 +4957,14 @@ interface DigestSchedulerProps {
|
|
|
4848
4957
|
declare function DigestScheduler({ tableId, savedViewId, subjectName, filters, onScheduled, onClose, className, existing, }: DigestSchedulerProps): react.JSX.Element;
|
|
4849
4958
|
|
|
4850
4959
|
interface SubscriptionsPanelProps {
|
|
4851
|
-
tableId: Uuid;
|
|
4960
|
+
tableId: Uuid$1;
|
|
4852
4961
|
/**
|
|
4853
4962
|
* THE DIGEST A LINK NAMED (`?rail=notifications&item=<rule>`, lane HUB-FIX).
|
|
4854
4963
|
* The rule is marked and scrolled to. This rail lists the subscriptions of the
|
|
4855
4964
|
* person signed in, so a rule that is somebody else's is said out loud as
|
|
4856
4965
|
* exactly that — never replaced by one of theirs.
|
|
4857
4966
|
*/
|
|
4858
|
-
activeRuleId?: Uuid | null | undefined;
|
|
4967
|
+
activeRuleId?: Uuid$1 | null | undefined;
|
|
4859
4968
|
className?: string | undefined;
|
|
4860
4969
|
}
|
|
4861
4970
|
/** The sentence when a link named a digest that is not in this person's list for this table. */
|
|
@@ -4940,7 +5049,7 @@ declare function viewNeedFor(layout: ViewLayout): ViewNeed | null;
|
|
|
4940
5049
|
declare function columnDeclarationFor(need: ViewNeed, label: string, options: readonly string[], fields: readonly Pick<Field, "sort">[] | null | undefined): NewFieldDeclaration;
|
|
4941
5050
|
interface ViewNeedsProps {
|
|
4942
5051
|
layout: ViewLayout;
|
|
4943
|
-
tableId: Uuid
|
|
5052
|
+
tableId: Uuid;
|
|
4944
5053
|
/** The table's columns, as the layout already holds them. */
|
|
4945
5054
|
fields: readonly Field[];
|
|
4946
5055
|
/**
|
|
@@ -4954,7 +5063,7 @@ declare function ViewNeeds({ layout, tableId, fields, onMade, className }: ViewN
|
|
|
4954
5063
|
|
|
4955
5064
|
interface FormBuilderProps {
|
|
4956
5065
|
/** The Table this form collects into. A form is a view on a real Table. */
|
|
4957
|
-
tableId: Uuid;
|
|
5066
|
+
tableId: Uuid$1;
|
|
4958
5067
|
/**
|
|
4959
5068
|
* COMPLETE DECLARATIVE SPECS an agent wrote. Any of these whose name this
|
|
4960
5069
|
* table does not have yet is saved as a record the first time the builder
|
|
@@ -4962,7 +5071,7 @@ interface FormBuilderProps {
|
|
|
4962
5071
|
* overwrites what a person has since tweaked.
|
|
4963
5072
|
*/
|
|
4964
5073
|
seed?: FormSpec[] | undefined;
|
|
4965
|
-
activeFormId?: Uuid | null | undefined;
|
|
5074
|
+
activeFormId?: Uuid$1 | null | undefined;
|
|
4966
5075
|
onActiveForm?: ((form: SavedForm) => void) | undefined;
|
|
4967
5076
|
/**
|
|
4968
5077
|
* The person asked to BUILD a form on a table that has none: make it on open, instead of an
|
|
@@ -5004,7 +5113,7 @@ interface ChartSpec {
|
|
|
5004
5113
|
id?: string;
|
|
5005
5114
|
title: string;
|
|
5006
5115
|
/** The Table this block asks about. */
|
|
5007
|
-
subject: Uuid
|
|
5116
|
+
subject: Uuid;
|
|
5008
5117
|
kind: ChartKind;
|
|
5009
5118
|
/** Field keys whose values become the groups. */
|
|
5010
5119
|
groupBy?: string[];
|
|
@@ -5031,23 +5140,23 @@ interface ChartSpec {
|
|
|
5031
5140
|
}
|
|
5032
5141
|
/** A dashboard as `custom.dashboards` reports it, in the screen's own words. */
|
|
5033
5142
|
interface SavedDashboard {
|
|
5034
|
-
id: Uuid
|
|
5143
|
+
id: Uuid;
|
|
5035
5144
|
name: string;
|
|
5036
5145
|
/** The subject Table: the one a block that names no table of its own reads. */
|
|
5037
|
-
subject: Uuid
|
|
5146
|
+
subject: Uuid | null;
|
|
5038
5147
|
blocks: ChartSpec[];
|
|
5039
5148
|
presentation: Record<string, unknown>;
|
|
5040
5149
|
/** The store's own version. A save re-states the whole dashboard. */
|
|
5041
5150
|
version: number;
|
|
5042
5151
|
}
|
|
5043
5152
|
/** One saved block back into the shape a screen edits. */
|
|
5044
|
-
declare function specFromBlock(block: DashboardBlock, subject: Uuid
|
|
5153
|
+
declare function specFromBlock(block: DashboardBlock, subject: Uuid): ChartSpec;
|
|
5045
5154
|
/**
|
|
5046
5155
|
* One block back into the door's own argument. `custom.dashboard_declare` judges
|
|
5047
5156
|
* every block on the way IN — a block naming a Field this Table does not have is
|
|
5048
5157
|
* refused BY NAME — so a canvas cannot be saved broken.
|
|
5049
5158
|
*/
|
|
5050
|
-
declare function blockFromSpec(spec: ChartSpec, subject: Uuid
|
|
5159
|
+
declare function blockFromSpec(spec: ChartSpec, subject: Uuid): DashboardBlock;
|
|
5051
5160
|
/** One row of `custom.dashboards` into the shape a screen and an agent both read. */
|
|
5052
5161
|
declare function dashboardFromSummary(summary: DashboardSummary): SavedDashboard;
|
|
5053
5162
|
/**
|
|
@@ -5056,12 +5165,12 @@ declare function dashboardFromSummary(summary: DashboardSummary): SavedDashboard
|
|
|
5056
5165
|
* a save that dropped it would quietly lose the question the person asked the
|
|
5057
5166
|
* agent, which is what the canvas is FOR.
|
|
5058
5167
|
*/
|
|
5059
|
-
declare function dashboardDeclareArgs(board: SavedDashboard, subject: Uuid
|
|
5060
|
-
table_id: Uuid
|
|
5168
|
+
declare function dashboardDeclareArgs(board: SavedDashboard, subject: Uuid): {
|
|
5169
|
+
table_id: Uuid;
|
|
5061
5170
|
name: string;
|
|
5062
5171
|
blocks: DashboardBlock[];
|
|
5063
5172
|
presentation: Record<string, unknown>;
|
|
5064
|
-
dashboard_id: Uuid
|
|
5173
|
+
dashboard_id: Uuid | null;
|
|
5065
5174
|
};
|
|
5066
5175
|
/**
|
|
5067
5176
|
* The series palette. Six SEMANTIC tokens the design system already flips for
|
|
@@ -5135,18 +5244,18 @@ declare function ChartLegendContent({ payload, config, className, }: {
|
|
|
5135
5244
|
|
|
5136
5245
|
interface DocTemplateProps {
|
|
5137
5246
|
/** The Table these templates render. */
|
|
5138
|
-
tableId: Uuid;
|
|
5247
|
+
tableId: Uuid$1;
|
|
5139
5248
|
/** COMPLETE templates an agent wrote, in Field keys. Saved once, never overwritten. */
|
|
5140
5249
|
seed?: DocTemplateSpec[] | undefined;
|
|
5141
|
-
activeTemplateId?: Uuid | null | undefined;
|
|
5250
|
+
activeTemplateId?: Uuid$1 | null | undefined;
|
|
5142
5251
|
onActiveTemplate?: ((template: DocTemplateRow) => void) | undefined;
|
|
5143
5252
|
className?: string | undefined;
|
|
5144
5253
|
}
|
|
5145
5254
|
declare function DocTemplate({ tableId, seed, activeTemplateId, onActiveTemplate, className }: DocTemplateProps): react.JSX.Element;
|
|
5146
5255
|
|
|
5147
5256
|
interface DocRenderProps {
|
|
5148
|
-
templateId: Uuid;
|
|
5149
|
-
recordId: Uuid;
|
|
5257
|
+
templateId: Uuid$1;
|
|
5258
|
+
recordId: Uuid$1;
|
|
5150
5259
|
/** A name for the file when somebody takes the PDF. */
|
|
5151
5260
|
filename?: string | undefined;
|
|
5152
5261
|
onRendered?: ((render: DocRenderRow) => void) | undefined;
|
|
@@ -5155,8 +5264,8 @@ interface DocRenderProps {
|
|
|
5155
5264
|
declare function DocRender({ templateId, recordId, filename, onRendered, className }: DocRenderProps): react.JSX.Element;
|
|
5156
5265
|
|
|
5157
5266
|
interface SignBlockProps {
|
|
5158
|
-
tableId: Uuid;
|
|
5159
|
-
recordId: Uuid;
|
|
5267
|
+
tableId: Uuid$1;
|
|
5268
|
+
recordId: Uuid$1;
|
|
5160
5269
|
/** The frozen version being signed. Without one there is nothing to seal. */
|
|
5161
5270
|
render: DocRenderRow | null;
|
|
5162
5271
|
className?: string | undefined;
|
|
@@ -5166,7 +5275,7 @@ declare function SignBlock({ tableId, recordId, render, className }: SignBlockPr
|
|
|
5166
5275
|
/** THE DECLARATIVE SPEC an agent writes. One declaration and a person is told. */
|
|
5167
5276
|
interface NotifyRuleSpec {
|
|
5168
5277
|
name: string;
|
|
5169
|
-
savedViewId: Uuid;
|
|
5278
|
+
savedViewId: Uuid$1;
|
|
5170
5279
|
/** `instant` fires the moment a record enters the view; the rest are summaries. */
|
|
5171
5280
|
cadence?: string;
|
|
5172
5281
|
/** The summary's schedule — "monday 08:00". Meaningless for `instant`. */
|
|
@@ -5175,12 +5284,12 @@ interface NotifyRuleSpec {
|
|
|
5175
5284
|
/** The hours not to be told in. A send inside them is MOVED, never dropped. */
|
|
5176
5285
|
quietHours?: QuietHours | null;
|
|
5177
5286
|
/** Who is told. Left out, the person setting it up — "tell ME". */
|
|
5178
|
-
recipientUserId?: Uuid | null;
|
|
5287
|
+
recipientUserId?: Uuid$1 | null;
|
|
5179
5288
|
eventKey?: string;
|
|
5180
5289
|
}
|
|
5181
5290
|
interface NotifyRuleEditorProps {
|
|
5182
5291
|
/** The Table these subscriptions are about — the Rule's scope. */
|
|
5183
|
-
tableId: Uuid;
|
|
5292
|
+
tableId: Uuid$1;
|
|
5184
5293
|
/** COMPLETE declarative subscriptions an agent wrote. Saved once, never overwritten. */
|
|
5185
5294
|
seed?: NotifyRuleSpec[] | undefined;
|
|
5186
5295
|
/**
|
|
@@ -5188,9 +5297,9 @@ interface NotifyRuleEditorProps {
|
|
|
5188
5297
|
* Rule). Given with `onChoose`, each subscription offers to be the one, and a
|
|
5189
5298
|
* subscription made here becomes the one the moment the store has it.
|
|
5190
5299
|
*/
|
|
5191
|
-
chosenRuleId?: Uuid | null | undefined;
|
|
5300
|
+
chosenRuleId?: Uuid$1 | null | undefined;
|
|
5192
5301
|
/** CHOOSE MODE — called with the chosen subscription's Rule id, or null to choose none. */
|
|
5193
|
-
onChoose?: ((ruleId: Uuid | null) => void) | undefined;
|
|
5302
|
+
onChoose?: ((ruleId: Uuid$1 | null) => void) | undefined;
|
|
5194
5303
|
className?: string | undefined;
|
|
5195
5304
|
}
|
|
5196
5305
|
declare function NotifyRuleEditor({ tableId, seed, chosenRuleId, onChoose, className }: NotifyRuleEditorProps): react.JSX.Element;
|
|
@@ -5199,7 +5308,7 @@ interface ChartBlockProps {
|
|
|
5199
5308
|
/** One block out of the canvas's single run — answered, or refused. */
|
|
5200
5309
|
block: DashboardBlockResult;
|
|
5201
5310
|
/** The dashboard's subject Table, for a block that names none of its own. */
|
|
5202
|
-
subject: Uuid
|
|
5311
|
+
subject: Uuid;
|
|
5203
5312
|
/** The table this chart reads, named in its header on a dashboard across tables. */
|
|
5204
5313
|
tableName?: string | undefined;
|
|
5205
5314
|
className?: string | undefined;
|
|
@@ -5224,8 +5333,8 @@ declare function ChartBlock({ block, subject, tableName, className, centerValue,
|
|
|
5224
5333
|
|
|
5225
5334
|
interface DashboardCanvasProps {
|
|
5226
5335
|
/** The Table these blocks are about. */
|
|
5227
|
-
tableId: Uuid;
|
|
5228
|
-
activeDashboardId?: Uuid | null | undefined;
|
|
5336
|
+
tableId: Uuid$1;
|
|
5337
|
+
activeDashboardId?: Uuid$1 | null | undefined;
|
|
5229
5338
|
/** The one filter bar across the canvas. Merged UNDER each block's own filter. */
|
|
5230
5339
|
filter?: Record<string, AggregateFilter> | undefined;
|
|
5231
5340
|
/**
|
|
@@ -5234,7 +5343,7 @@ interface DashboardCanvasProps {
|
|
|
5234
5343
|
*/
|
|
5235
5344
|
createOnMount?: boolean | undefined;
|
|
5236
5345
|
/** Told the id of a dashboard this canvas made (the starter, or `createOnMount`'s). */
|
|
5237
|
-
onCreated?: ((dashboardId: Uuid) => void) | undefined;
|
|
5346
|
+
onCreated?: ((dashboardId: Uuid$1) => void) | undefined;
|
|
5238
5347
|
className?: string | undefined;
|
|
5239
5348
|
}
|
|
5240
5349
|
declare function DashboardCanvas({ tableId, activeDashboardId, filter, createOnMount, onCreated, className }: DashboardCanvasProps): react.JSX.Element;
|
|
@@ -5323,40 +5432,40 @@ declare function flatWhere(where: RuleExpression | null, fields: readonly Field[
|
|
|
5323
5432
|
* ASK THE STORE. `fields` are this table's Fields (the condition builder writes Fields by id, and a
|
|
5324
5433
|
* formula column cannot be asked "as of"). Every number in the answer is a door's.
|
|
5325
5434
|
*/
|
|
5326
|
-
declare function askQuestion(client: RecordsClient, tableId: Uuid
|
|
5435
|
+
declare function askQuestion(client: RecordsClient, tableId: Uuid, spec: QuestionSpec, fields: readonly Field[]): Promise<RecordsResult<QuestionAnswer>>;
|
|
5327
5436
|
/**
|
|
5328
5437
|
* THE COLUMNS THIS READER MAY NOT READ, asked of the store: one aggregate measuring how many
|
|
5329
5438
|
* records fill each column that carries a sensitivity, and every measure the store WITHHOLDS is a
|
|
5330
5439
|
* column never offered. Nothing is guessed from levels here; the store decides, as it does for the
|
|
5331
5440
|
* grid's cells.
|
|
5332
5441
|
*/
|
|
5333
|
-
declare function unreadableKeys(client: RecordsClient, tableId: Uuid
|
|
5442
|
+
declare function unreadableKeys(client: RecordsClient, tableId: Uuid, fields: readonly Field[]): Promise<Set<string>>;
|
|
5334
5443
|
/** The columns a measure other than count may read: numbers (formula arithmetic included); min/max also dates. */
|
|
5335
5444
|
declare function measurableFields(fields: readonly Field[], op: QuestionOp): Field[];
|
|
5336
5445
|
/** The saved-view surface a Question is kept under, beside the table's views (`custom/records`). */
|
|
5337
5446
|
declare const QUESTION_SURFACE = "custom/records/question";
|
|
5338
5447
|
interface SavedQuestion {
|
|
5339
|
-
id: Uuid
|
|
5448
|
+
id: Uuid;
|
|
5340
5449
|
name: string;
|
|
5341
5450
|
spec: QuestionSpec;
|
|
5342
5451
|
/** Shared with the organization (`internal`) or kept for its maker (`personal`). */
|
|
5343
5452
|
shared: boolean;
|
|
5344
5453
|
version: number;
|
|
5345
|
-
createdBy: Uuid
|
|
5454
|
+
createdBy: Uuid | null;
|
|
5346
5455
|
}
|
|
5347
5456
|
/** The table's Questions this person may read (the row's own access decides). */
|
|
5348
|
-
declare function questionsOf(client: RecordsClient, tableId: Uuid
|
|
5457
|
+
declare function questionsOf(client: RecordsClient, tableId: Uuid): Promise<RecordsResult<SavedQuestion[]>>;
|
|
5349
5458
|
/** Keep a Question (new when `id` is absent). `null` data = somebody changed it first. */
|
|
5350
5459
|
declare function questionSave(client: RecordsClient, args: {
|
|
5351
|
-
id?: Uuid
|
|
5352
|
-
tableId: Uuid
|
|
5460
|
+
id?: Uuid | null;
|
|
5461
|
+
tableId: Uuid;
|
|
5353
5462
|
name: string;
|
|
5354
5463
|
spec: QuestionSpec;
|
|
5355
5464
|
shared: boolean;
|
|
5356
5465
|
expectedVersion?: number;
|
|
5357
5466
|
}): Promise<RecordsResult<SavedQuestion | null>>;
|
|
5358
5467
|
/** Archive a Question (its maker, or an admin of it). */
|
|
5359
|
-
declare function questionArchive(client: RecordsClient, id: Uuid
|
|
5468
|
+
declare function questionArchive(client: RecordsClient, id: Uuid, version?: number): Promise<RecordsResult<boolean>>;
|
|
5360
5469
|
|
|
5361
5470
|
/** A related table's columns, keyed by the relation that reaches it. */
|
|
5362
5471
|
type Related = Record<string, {
|
|
@@ -5364,9 +5473,9 @@ type Related = Record<string, {
|
|
|
5364
5473
|
fields: Field[];
|
|
5365
5474
|
}>;
|
|
5366
5475
|
interface QuestionPanelProps {
|
|
5367
|
-
tableId: Uuid;
|
|
5476
|
+
tableId: Uuid$1;
|
|
5368
5477
|
/** A saved Question the address named (`?view=questions&item=<id>`). */
|
|
5369
|
-
activeQuestionId?: Uuid | null | undefined;
|
|
5478
|
+
activeQuestionId?: Uuid$1 | null | undefined;
|
|
5370
5479
|
/**
|
|
5371
5480
|
* A question asked elsewhere and not saved yet (the table's Ask box, "Open in Questions"):
|
|
5372
5481
|
* the builder opens holding it, as a new question. A new object each time it is handed over.
|
|
@@ -5377,7 +5486,7 @@ interface QuestionPanelProps {
|
|
|
5377
5486
|
declare function QuestionPanel({ tableId, activeQuestionId, draft, className }: QuestionPanelProps): react.JSX.Element;
|
|
5378
5487
|
/** The answer as Questions draws it — also the table's Ask box's answer (`TableAsk.tsx`): one drawing, one number. */
|
|
5379
5488
|
declare function QuestionAnswerView({ tableId, spec, answer, fields, related }: {
|
|
5380
|
-
tableId: Uuid;
|
|
5489
|
+
tableId: Uuid$1;
|
|
5381
5490
|
spec: QuestionSpec;
|
|
5382
5491
|
answer: QuestionAnswer;
|
|
5383
5492
|
fields: Field[];
|
|
@@ -5385,7 +5494,7 @@ declare function QuestionAnswerView({ tableId, spec, answer, fields, related }:
|
|
|
5385
5494
|
}): react.JSX.Element;
|
|
5386
5495
|
|
|
5387
5496
|
interface TableAskProps {
|
|
5388
|
-
tableId: Uuid;
|
|
5497
|
+
tableId: Uuid$1;
|
|
5389
5498
|
/** Open the answered question in the Question builder. Absent, the button is not drawn. */
|
|
5390
5499
|
onOpenInQuestions?: ((spec: QuestionSpec) => void) | undefined;
|
|
5391
5500
|
}
|
|
@@ -5411,13 +5520,13 @@ declare function questionFromWords(text: string, fields: readonly Field[], choic
|
|
|
5411
5520
|
|
|
5412
5521
|
interface PageScreenProps {
|
|
5413
5522
|
/** The page to open. */
|
|
5414
|
-
pageId?: Uuid | null | undefined;
|
|
5523
|
+
pageId?: Uuid$1 | null | undefined;
|
|
5415
5524
|
/** Make a new page on this Table instead (its starter: a list and a record panel), then open it. */
|
|
5416
|
-
newOnTable?: Uuid | null | undefined;
|
|
5525
|
+
newOnTable?: Uuid$1 | null | undefined;
|
|
5417
5526
|
/** The signed-in person: "Assigned to me" is her own Person record. */
|
|
5418
5527
|
viewerUserId?: string | null | undefined;
|
|
5419
5528
|
/** Told the id of the page `newOnTable` made. */
|
|
5420
|
-
onCreated?: ((pageId: Uuid) => void) | undefined;
|
|
5529
|
+
onCreated?: ((pageId: Uuid$1) => void) | undefined;
|
|
5421
5530
|
/** The page was archived: the host leaves it. */
|
|
5422
5531
|
onArchived?: (() => void) | undefined;
|
|
5423
5532
|
/** Open in edit mode (a page just made). */
|
|
@@ -5445,9 +5554,9 @@ interface PageBlockBase {
|
|
|
5445
5554
|
}
|
|
5446
5555
|
interface ListPageBlock extends PageBlockBase {
|
|
5447
5556
|
kind: "list";
|
|
5448
|
-
table_id: Uuid
|
|
5557
|
+
table_id: Uuid;
|
|
5449
5558
|
/** A saved view of the table: its filter and sort shape the list. */
|
|
5450
|
-
view_id?: Uuid
|
|
5559
|
+
view_id?: Uuid | null;
|
|
5451
5560
|
/** The block's own question, the store's flat filter (field key → value). */
|
|
5452
5561
|
filter?: RecordFilter;
|
|
5453
5562
|
/** The columns shown, by field key; left out, the first few the table declares. */
|
|
@@ -5467,18 +5576,18 @@ interface ButtonPageBlock extends PageBlockBase {
|
|
|
5467
5576
|
kind: "button";
|
|
5468
5577
|
/** The list block whose selected row the action runs on. */
|
|
5469
5578
|
source: string;
|
|
5470
|
-
table_id: Uuid
|
|
5579
|
+
table_id: Uuid;
|
|
5471
5580
|
/** An existing row action of that table (`custom.row_actions`). */
|
|
5472
|
-
action_id: Uuid
|
|
5581
|
+
action_id: Uuid;
|
|
5473
5582
|
}
|
|
5474
5583
|
interface FormPageBlock extends PageBlockBase {
|
|
5475
5584
|
kind: "form";
|
|
5476
|
-
table_id: Uuid
|
|
5477
|
-
form_id: Uuid
|
|
5585
|
+
table_id: Uuid;
|
|
5586
|
+
form_id: Uuid;
|
|
5478
5587
|
}
|
|
5479
5588
|
interface FilterPageBlock extends PageBlockBase {
|
|
5480
5589
|
kind: "filter";
|
|
5481
|
-
table_id: Uuid
|
|
5590
|
+
table_id: Uuid;
|
|
5482
5591
|
/** A choice (or yes/no) column of that table. */
|
|
5483
5592
|
field: string;
|
|
5484
5593
|
/** The list blocks it narrows. Empty = every list on the page over the same table. */
|
|
@@ -5524,7 +5633,7 @@ declare function pagePresentation(presentation: Record<string, unknown> | null |
|
|
|
5524
5633
|
* THE STARTER PAGE on one table, the way Airtable's record-review layout starts: the table's records
|
|
5525
5634
|
* on the left, the chosen one on the right. One press makes a page that already works.
|
|
5526
5635
|
*/
|
|
5527
|
-
declare function starterPageBlocks(tableId: Uuid
|
|
5636
|
+
declare function starterPageBlocks(tableId: Uuid): PageBlock[];
|
|
5528
5637
|
/** The list blocks a filter block narrows: those it names, or every list over its table. */
|
|
5529
5638
|
declare function filterTargets(filter: FilterPageBlock, blocks: readonly PageBlock[]): string[];
|
|
5530
5639
|
/**
|
|
@@ -5540,14 +5649,14 @@ declare function combineFilter(base: StoreFilter | null | undefined, extra: Reco
|
|
|
5540
5649
|
};
|
|
5541
5650
|
|
|
5542
5651
|
interface FormsPanelProps {
|
|
5543
|
-
tableId: Uuid;
|
|
5652
|
+
tableId: Uuid$1;
|
|
5544
5653
|
/**
|
|
5545
5654
|
* THE FORM A LINK NAMED (`?rail=forms&item=<form>`, lane HUB-FIX). The rail
|
|
5546
5655
|
* opens ON it: marked and scrolled to, and — for somebody who may build — its
|
|
5547
5656
|
* builder open on that form. An id this table has no form by is said out
|
|
5548
5657
|
* loud, never swapped for the first form in the list.
|
|
5549
5658
|
*/
|
|
5550
|
-
activeFormId?: Uuid | null | undefined;
|
|
5659
|
+
activeFormId?: Uuid$1 | null | undefined;
|
|
5551
5660
|
className?: string | undefined;
|
|
5552
5661
|
}
|
|
5553
5662
|
/** The sentence when a link named a form this table does not have. */
|
|
@@ -5576,7 +5685,7 @@ type FormAsked = {
|
|
|
5576
5685
|
type FormSubmitOutcome = {
|
|
5577
5686
|
ok: true;
|
|
5578
5687
|
message?: string | null;
|
|
5579
|
-
recordId?: Uuid | null;
|
|
5688
|
+
recordId?: Uuid$1 | null;
|
|
5580
5689
|
} | {
|
|
5581
5690
|
ok: false;
|
|
5582
5691
|
message: string;
|
|
@@ -5625,7 +5734,7 @@ interface FormRunnerProps {
|
|
|
5625
5734
|
resumed?: boolean | undefined;
|
|
5626
5735
|
/** Preview mode answers the questions but writes nothing, and says so. */
|
|
5627
5736
|
preview?: boolean | undefined;
|
|
5628
|
-
onSubmitted?: ((recordId: Uuid | null) => void) | undefined;
|
|
5737
|
+
onSubmitted?: ((recordId: Uuid$1 | null) => void) | undefined;
|
|
5629
5738
|
className?: string | undefined;
|
|
5630
5739
|
}
|
|
5631
5740
|
/**
|
|
@@ -5637,11 +5746,11 @@ declare function FormRunner(props: FormRunnerProps): react.JSX.Element;
|
|
|
5637
5746
|
|
|
5638
5747
|
interface ChecklistRunnerProps {
|
|
5639
5748
|
/** The Table runs are ABOUT. On a record page, the record's own table. */
|
|
5640
|
-
tableId?: Uuid | null | undefined;
|
|
5749
|
+
tableId?: Uuid$1 | null | undefined;
|
|
5641
5750
|
/** Runs about THIS record — a new hire, a matter, a job. */
|
|
5642
|
-
recordId?: Uuid | null | undefined;
|
|
5751
|
+
recordId?: Uuid$1 | null | undefined;
|
|
5643
5752
|
/** One run, named outright. Overrides the two above. */
|
|
5644
|
-
runId?: Uuid | null | undefined;
|
|
5753
|
+
runId?: Uuid$1 | null | undefined;
|
|
5645
5754
|
/** Show runs that have been closed too. The default is what is still open. */
|
|
5646
5755
|
includeClosed?: boolean | undefined;
|
|
5647
5756
|
/** Offer the templates that could be started here. On by default with a record. */
|
|
@@ -5675,7 +5784,7 @@ declare function StepRow({ step, busy, onComplete, onAssign, className, }: {
|
|
|
5675
5784
|
*/
|
|
5676
5785
|
declare function useMyChecklistSteps(limit?: number): {
|
|
5677
5786
|
steps: Array<ChecklistRunStep & {
|
|
5678
|
-
run_id: Uuid;
|
|
5787
|
+
run_id: Uuid$1;
|
|
5679
5788
|
run_name: string;
|
|
5680
5789
|
}>;
|
|
5681
5790
|
loading: boolean;
|
|
@@ -5694,12 +5803,12 @@ declare function MyChecklistSteps({ className, onlyIds, onSteps, actions, }: {
|
|
|
5694
5803
|
/** Every step id this group holds, so the inbox can draw each step once — here, where it is finished. */
|
|
5695
5804
|
onSteps?: ((ids: string[]) => void) | undefined;
|
|
5696
5805
|
/** The inbox's own controls for a step (snooze, done), drawn beside it. */
|
|
5697
|
-
actions?: ((stepId: Uuid) => ReactNode) | undefined;
|
|
5806
|
+
actions?: ((stepId: Uuid$1) => ReactNode) | undefined;
|
|
5698
5807
|
}): react.JSX.Element | null;
|
|
5699
5808
|
interface ChecklistsPanelProps {
|
|
5700
|
-
tableId: Uuid;
|
|
5809
|
+
tableId: Uuid$1;
|
|
5701
5810
|
/** Open the record a run is about. */
|
|
5702
|
-
onOpenRecord?: ((recordId: Uuid) => void) | undefined;
|
|
5811
|
+
onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
|
|
5703
5812
|
className?: string | undefined;
|
|
5704
5813
|
}
|
|
5705
5814
|
/**
|
|
@@ -5718,15 +5827,15 @@ declare function ChecklistsPanel({ tableId, onOpenRecord, className }: Checklist
|
|
|
5718
5827
|
* validator here: a rule written twice is a rule that will disagree with itself.
|
|
5719
5828
|
*/
|
|
5720
5829
|
declare function ChecklistTemplateEditor({ aboutTableId, templateId, onDone, onSaved, className, }: {
|
|
5721
|
-
aboutTableId: Uuid;
|
|
5722
|
-
templateId?: Uuid | null | undefined;
|
|
5830
|
+
aboutTableId: Uuid$1;
|
|
5831
|
+
templateId?: Uuid$1 | null | undefined;
|
|
5723
5832
|
/** Cancel; and, when the host passes no `onSaved`, a finished Save. */
|
|
5724
5833
|
onDone?: (() => void) | undefined;
|
|
5725
5834
|
/**
|
|
5726
5835
|
* A Save landed: the checklist's id. Passed, the editor STAYS open and says it is saved (the
|
|
5727
5836
|
* host decides where to go); every later Save re-states that same checklist.
|
|
5728
5837
|
*/
|
|
5729
|
-
onSaved?: ((templateId: Uuid) => void) | undefined;
|
|
5838
|
+
onSaved?: ((templateId: Uuid$1) => void) | undefined;
|
|
5730
5839
|
className?: string | undefined;
|
|
5731
5840
|
}): react.JSX.Element;
|
|
5732
5841
|
|
|
@@ -5748,9 +5857,9 @@ declare function whyNotAskable(fields: readonly Field[], hidden?: readonly strin
|
|
|
5748
5857
|
declare const STORE_ANSWERS_THESE: readonly ["slot", "status", "booked_with"];
|
|
5749
5858
|
interface BookingBuilderProps {
|
|
5750
5859
|
/** The Table the appointments land in. An appointment is an ordinary record in it. */
|
|
5751
|
-
tableId: Uuid;
|
|
5860
|
+
tableId: Uuid$1;
|
|
5752
5861
|
/** Re-state an existing page rather than making a second one over the same Table. */
|
|
5753
|
-
bookingId?: Uuid | null | undefined;
|
|
5862
|
+
bookingId?: Uuid$1 | null | undefined;
|
|
5754
5863
|
/** Called after a save, so the list this opened from re-reads the store. */
|
|
5755
5864
|
onSaved?: ((page: {
|
|
5756
5865
|
form_id: string;
|
|
@@ -5773,13 +5882,13 @@ interface BookingSlotsProps {
|
|
|
5773
5882
|
* booking page in this organization, which is the same door asked the wider
|
|
5774
5883
|
* question, never a second list.
|
|
5775
5884
|
*/
|
|
5776
|
-
tableId?: Uuid | null | undefined;
|
|
5885
|
+
tableId?: Uuid$1 | null | undefined;
|
|
5777
5886
|
/**
|
|
5778
5887
|
* THE BOOKING PAGE A LINK NAMED (`?rail=bookings&item=<page>`, lane HUB-FIX,
|
|
5779
5888
|
* VERIFIER-16 M4). It is marked and scrolled to. A page this rail does not
|
|
5780
5889
|
* list is said out loud, never swapped for another.
|
|
5781
5890
|
*/
|
|
5782
|
-
activeBookingId?: Uuid | null | undefined;
|
|
5891
|
+
activeBookingId?: Uuid$1 | null | undefined;
|
|
5783
5892
|
className?: string | undefined;
|
|
5784
5893
|
}
|
|
5785
5894
|
/** The sentence when a link named a booking page this rail does not list. */
|
|
@@ -5811,9 +5920,9 @@ interface CaptureSheetProps {
|
|
|
5811
5920
|
* Without one this stays the ad-hoc capture below, which guesses which Field a
|
|
5812
5921
|
* reading goes in — right for a quick one-off, wrong for a crew.
|
|
5813
5922
|
*/
|
|
5814
|
-
sheetId?: Uuid | undefined;
|
|
5923
|
+
sheetId?: Uuid$1 | undefined;
|
|
5815
5924
|
/** The Table a capture becomes a record in. Not needed when `sheetId` is given. */
|
|
5816
|
-
tableId: Uuid;
|
|
5925
|
+
tableId: Uuid$1;
|
|
5817
5926
|
/** Which Field a reading's number goes in. Defaults to the first range Field. */
|
|
5818
5927
|
readingField?: string | undefined;
|
|
5819
5928
|
/** Which Field the note goes in. Defaults to the Table's title field. */
|
|
@@ -5825,7 +5934,7 @@ interface CaptureSheetProps {
|
|
|
5825
5934
|
declare function CaptureSheet({ sheetId, tableId, readingField, noteField, attachmentField, className, }: CaptureSheetProps): react.JSX.Element;
|
|
5826
5935
|
|
|
5827
5936
|
interface CaptureRunProps {
|
|
5828
|
-
sheetId: Uuid
|
|
5937
|
+
sheetId: Uuid;
|
|
5829
5938
|
/**
|
|
5830
5939
|
* The sheet, already loaded — by a server render, or from the phone's own copy. Given
|
|
5831
5940
|
* one, this component makes NO network call before the first question is on screen.
|
|
@@ -5839,7 +5948,7 @@ declare function CaptureRun({ sheetId, face: given, className }: CaptureRunProps
|
|
|
5839
5948
|
|
|
5840
5949
|
interface PortalShellProps {
|
|
5841
5950
|
/** The Table the outsider's records belong to. */
|
|
5842
|
-
tableId: Uuid;
|
|
5951
|
+
tableId: Uuid$1;
|
|
5843
5952
|
/** OPTIONAL. A form the outsider may send — their one way to put something in. */
|
|
5844
5953
|
form?: FormSpec | undefined;
|
|
5845
5954
|
/** What the resources are called in `iam`'s own vocabulary. Default `record`. */
|
|
@@ -5857,12 +5966,12 @@ declare function PublicViewPage({ slug, className }: PublicViewPageProps): react
|
|
|
5857
5966
|
|
|
5858
5967
|
interface EmbedFrameProps {
|
|
5859
5968
|
/** The Table whose rights decide whether an embed may be issued at all. */
|
|
5860
|
-
tableId: Uuid;
|
|
5969
|
+
tableId: Uuid$1;
|
|
5861
5970
|
/** A write embed names the form it writes into. */
|
|
5862
|
-
formId?: Uuid | null | undefined;
|
|
5971
|
+
formId?: Uuid$1 | null | undefined;
|
|
5863
5972
|
/** A read embed names the saved view or the record it shows. */
|
|
5864
|
-
savedViewId?: Uuid | null | undefined;
|
|
5865
|
-
recordId?: Uuid | null | undefined;
|
|
5973
|
+
savedViewId?: Uuid$1 | null | undefined;
|
|
5974
|
+
recordId?: Uuid$1 | null | undefined;
|
|
5866
5975
|
/** Where the embedded page is served from — the `src` of the iframe. */
|
|
5867
5976
|
embedUrl: string;
|
|
5868
5977
|
className?: string | undefined;
|
|
@@ -5916,7 +6025,7 @@ interface RecordsMountProps {
|
|
|
5916
6025
|
children: ReactNode;
|
|
5917
6026
|
}
|
|
5918
6027
|
declare function RecordsMount({ config, host, letTheStoreDecideRights, children, }: RecordsMountProps): react.JSX.Element;
|
|
5919
|
-
declare function personActor(userId: Uuid
|
|
6028
|
+
declare function personActor(userId: Uuid | null | undefined): RecordsActor;
|
|
5920
6029
|
declare function recordsDataSource(client: object, fallbackSchema?: string): RecordsDataSource;
|
|
5921
6030
|
|
|
5922
6031
|
type TableLane = "mine" | "organization" | "system" | "community" | "app";
|
|
@@ -5985,7 +6094,7 @@ interface TablesHomeProps {
|
|
|
5985
6094
|
* unchanged; a host that ignores it lands on the records, which is what it
|
|
5986
6095
|
* did before, rather than on a screen it does not know how to address.
|
|
5987
6096
|
*/
|
|
5988
|
-
onOpenTable?: ((tableId: Uuid
|
|
6097
|
+
onOpenTable?: ((tableId: Uuid, dashboardId?: Uuid) => void) | undefined;
|
|
5989
6098
|
/**
|
|
5990
6099
|
* THE ORGANIZATION EVERY ROW HERE LIVES IN, BY NAME (lane SC-1-TAILS; access-is-personal: a
|
|
5991
6100
|
* list filtered by one organization says which). Each row carries a quiet "Lives in <name>"
|
|
@@ -6023,7 +6132,7 @@ interface TablesHomeProps {
|
|
|
6023
6132
|
declare function TablesHome({ onOpenTable, organizationName, makingOnly, askedBy, templatesHref, className }: TablesHomeProps): react.JSX.Element;
|
|
6024
6133
|
|
|
6025
6134
|
interface WhereItLivesProps {
|
|
6026
|
-
tableId: Uuid
|
|
6135
|
+
tableId: Uuid;
|
|
6027
6136
|
/**
|
|
6028
6137
|
* The name the screen already holds (a list whose rows all live in one organization), shown
|
|
6029
6138
|
* until the store answers — and, on a row, instead of asking at all until the chip is pressed:
|
|
@@ -6032,7 +6141,7 @@ interface WhereItLivesProps {
|
|
|
6032
6141
|
knownOrganizationName?: string | null | undefined;
|
|
6033
6142
|
/** After a move lands: the host re-reads (the list, its rows, the page). */
|
|
6034
6143
|
onMoved?: ((to: {
|
|
6035
|
-
id: Uuid
|
|
6144
|
+
id: Uuid;
|
|
6036
6145
|
name: string;
|
|
6037
6146
|
}) => void) | undefined;
|
|
6038
6147
|
/**
|
|
@@ -6076,7 +6185,7 @@ declare function sameViewAddress(a: ViewAddressState | null | undefined, b: View
|
|
|
6076
6185
|
|
|
6077
6186
|
type Rail = "none" | "settings" | "inbox" | "import" | "field" | "record" | "new-record" | "forms" | "bookings" | "checklists" | "notifications" | "portals" | "who-changed" | "export";
|
|
6078
6187
|
interface TablePageProps$1 {
|
|
6079
|
-
tableId: Uuid
|
|
6188
|
+
tableId: Uuid;
|
|
6080
6189
|
/**
|
|
6081
6190
|
* `embedded` — a table inside a page, like Notion's inline database (CHAIR-GRID-LINKS 06): the
|
|
6082
6191
|
* same page with its furniture off. No title row (the host draws it), no Layout chooser, and the
|
|
@@ -6126,7 +6235,7 @@ interface TablePageProps$1 {
|
|
|
6126
6235
|
* canvas on that dashboard; absent, the page opens on the records exactly as
|
|
6127
6236
|
* it always has.
|
|
6128
6237
|
*/
|
|
6129
|
-
activeDashboardId?: Uuid
|
|
6238
|
+
activeDashboardId?: Uuid | null | undefined;
|
|
6130
6239
|
/**
|
|
6131
6240
|
* THE RECORD A LINK NAMED, OPENED ON ARRIVAL.
|
|
6132
6241
|
*
|
|
@@ -6139,7 +6248,7 @@ interface TablePageProps$1 {
|
|
|
6139
6248
|
*
|
|
6140
6249
|
* Absent, nothing changes: the page opens exactly as it did.
|
|
6141
6250
|
*/
|
|
6142
|
-
activeRecordId?: Uuid
|
|
6251
|
+
activeRecordId?: Uuid | null | undefined;
|
|
6143
6252
|
/**
|
|
6144
6253
|
* WHICH VIEW THE ADDRESS NAMES — `grid`, `kanban`, `calendar`, `gallery` or
|
|
6145
6254
|
* `dashboards`, exactly as the host read it out of `?view=`.
|
|
@@ -6228,7 +6337,7 @@ interface TablePageProps$1 {
|
|
|
6228
6337
|
* opened, the rule marked and scrolled to. An id the rail does not hold is
|
|
6229
6338
|
* said out loud by the rail, never replaced by its first row.
|
|
6230
6339
|
*/
|
|
6231
|
-
activeItemId?: Uuid
|
|
6340
|
+
activeItemId?: Uuid | null | undefined;
|
|
6232
6341
|
/**
|
|
6233
6342
|
* THE PAGE'S HEADER, handed the table's own page-level controls (lane TABLE-PAGE-CHROME, owner
|
|
6234
6343
|
* 2026-09-25: "align with the app's top-tier pages"). Called with `actions` — Share and the
|
|
@@ -6421,9 +6530,9 @@ declare function surfaceChosen(current: Surface, asking: SurfacePress): boolean;
|
|
|
6421
6530
|
* WHAT THE PAGE OPENS SHOWING — one pure function, so the dead link can be shown failing.
|
|
6422
6531
|
* See `TablePageProps.activeRecordId` for the defect it closes.
|
|
6423
6532
|
*/
|
|
6424
|
-
declare function openingRail(activeRecordId: Uuid
|
|
6533
|
+
declare function openingRail(activeRecordId: Uuid | null | undefined, activeRail?: string | null | undefined): {
|
|
6425
6534
|
rail: "record" | "none" | Exclude<LinkRail, "share">;
|
|
6426
|
-
record: Uuid
|
|
6535
|
+
record: Uuid | null;
|
|
6427
6536
|
};
|
|
6428
6537
|
/** The rails a link may open, plus `share`, which opens the share dialog over the page. */
|
|
6429
6538
|
type LinkRail = "forms" | "bookings" | "checklists" | "notifications" | "portals" | "settings" | "import" | "inbox" | "export" | "field" | "share";
|
|
@@ -6449,7 +6558,7 @@ declare const SHARE_NOT_YOURS_LINE: string;
|
|
|
6449
6558
|
* A `?dashboard=<id>` with no `?view=` still opens the canvas, because that
|
|
6450
6559
|
* link predates this one and must keep working.
|
|
6451
6560
|
*/
|
|
6452
|
-
declare function openingView(activeView: string | null | undefined, activeDashboardId: Uuid
|
|
6561
|
+
declare function openingView(activeView: string | null | undefined, activeDashboardId: Uuid | null | undefined): {
|
|
6453
6562
|
main: MainView;
|
|
6454
6563
|
layout: ViewLayout | null;
|
|
6455
6564
|
unknown: string | null;
|
|
@@ -6589,7 +6698,7 @@ declare function EntityTablePage(props: EntityTablePageProps): react.JSX.Element
|
|
|
6589
6698
|
|
|
6590
6699
|
type TablePageSource = {
|
|
6591
6700
|
kind: "table";
|
|
6592
|
-
id: Uuid
|
|
6701
|
+
id: Uuid;
|
|
6593
6702
|
} | {
|
|
6594
6703
|
kind: "entity";
|
|
6595
6704
|
token: string;
|
|
@@ -6620,7 +6729,7 @@ declare function InTableToolbar({ children }: {
|
|
|
6620
6729
|
}): react.JSX.Element | null;
|
|
6621
6730
|
|
|
6622
6731
|
/** What the roster can tell us about a user id. `null` when it cannot. */
|
|
6623
|
-
type ResolveName = (userId: Uuid
|
|
6732
|
+
type ResolveName = (userId: Uuid) => string | null;
|
|
6624
6733
|
/** The honest stand-in when nobody and nothing can put a name to the author. */
|
|
6625
6734
|
declare const SOMEBODY = "somebody in this organization";
|
|
6626
6735
|
/** The platform's own word for itself. Never "null", never "system_user". */
|
|
@@ -6654,18 +6763,18 @@ interface WhoChanged {
|
|
|
6654
6763
|
* asking its question, exactly as before, and nothing throws.
|
|
6655
6764
|
*/
|
|
6656
6765
|
declare function WhoChangedSource({ tableId, labelOf, children, }: {
|
|
6657
|
-
tableId: Uuid
|
|
6766
|
+
tableId: Uuid;
|
|
6658
6767
|
/** The Field's own label, so the sentence reads "Primary diagnosis" and not `primary_diagnosis`. */
|
|
6659
6768
|
labelOf: (fieldKey: string) => string;
|
|
6660
6769
|
children: ReactNode;
|
|
6661
6770
|
}): react.JSX.Element;
|
|
6662
6771
|
/** What this cell can say about who last changed it. */
|
|
6663
|
-
declare function useWhoChanged(fieldKey: string, recordId: Uuid
|
|
6772
|
+
declare function useWhoChanged(fieldKey: string, recordId: Uuid): WhoChanged;
|
|
6664
6773
|
|
|
6665
6774
|
interface ShareControlProps {
|
|
6666
6775
|
kind: ShareSubject["kind"];
|
|
6667
|
-
organizationId: Uuid
|
|
6668
|
-
subjectId: Uuid
|
|
6776
|
+
organizationId: Uuid;
|
|
6777
|
+
subjectId: Uuid;
|
|
6669
6778
|
/** What to call it in the dialog's title. */
|
|
6670
6779
|
name?: string | undefined;
|
|
6671
6780
|
/**
|
|
@@ -6785,7 +6894,7 @@ declare function WithheldValue({ field, notice }: {
|
|
|
6785
6894
|
}): react.JSX.Element;
|
|
6786
6895
|
|
|
6787
6896
|
interface PipelineBoardProps {
|
|
6788
|
-
tableId: Uuid;
|
|
6897
|
+
tableId: Uuid$1;
|
|
6789
6898
|
/** The rows the view holds — the SAME rows every other layout of this view draws. */
|
|
6790
6899
|
rows: ReadRow$1[];
|
|
6791
6900
|
/**
|
|
@@ -6802,7 +6911,7 @@ interface PipelineBoardProps {
|
|
|
6802
6911
|
*/
|
|
6803
6912
|
filter?: StoreFilter | null | undefined;
|
|
6804
6913
|
onMeasureChange?: ((key: string | null) => void) | undefined;
|
|
6805
|
-
onOpenRecord?: ((recordId: Uuid) => void) | undefined;
|
|
6914
|
+
onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
|
|
6806
6915
|
/** Called after a move lands, so the host re-reads the rows it owns. */
|
|
6807
6916
|
onMoved?: (() => void) | undefined;
|
|
6808
6917
|
/** A card's menu copied or archived a record: the host re-reads the rows it owns. */
|
|
@@ -6896,8 +7005,8 @@ declare function ObjectActionGlyph({ name, ...props }: {
|
|
|
6896
7005
|
|
|
6897
7006
|
/** What the list needs to know about the record. */
|
|
6898
7007
|
interface RecordActionSubject {
|
|
6899
|
-
id: Uuid
|
|
6900
|
-
tableId: Uuid
|
|
7008
|
+
id: Uuid;
|
|
7009
|
+
tableId: Uuid;
|
|
6901
7010
|
/** The record's name as every card reads it (`recordNameIn` / `cardWords`). */
|
|
6902
7011
|
name: string;
|
|
6903
7012
|
}
|
|
@@ -6942,9 +7051,9 @@ declare function recordLink(tableId: string, recordId: string, origin?: string):
|
|
|
6942
7051
|
declare function recordActions(input: RecordActionsInput): ObjectAction[];
|
|
6943
7052
|
|
|
6944
7053
|
interface RecordActionHostArgs {
|
|
6945
|
-
tableId: Uuid;
|
|
7054
|
+
tableId: Uuid$1;
|
|
6946
7055
|
row: ReadRow$1;
|
|
6947
|
-
onOpenRecord?: ((recordId: Uuid) => void) | undefined;
|
|
7056
|
+
onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
|
|
6948
7057
|
/** Re-read the surface after a copy or an archive. */
|
|
6949
7058
|
onChanged?: (() => void) | undefined;
|
|
6950
7059
|
/** Open the merge dialog for this record (`MergeRecordDialog`). Absent: Merge says why. */
|
|
@@ -6974,8 +7083,8 @@ interface ViewActionHost {
|
|
|
6974
7083
|
declare function viewActions(whyNot: string | null, host: ViewActionHost): ObjectAction[];
|
|
6975
7084
|
|
|
6976
7085
|
interface RecordPanelProps {
|
|
6977
|
-
tableId: Uuid;
|
|
6978
|
-
recordId: Uuid;
|
|
7086
|
+
tableId: Uuid$1;
|
|
7087
|
+
recordId: Uuid$1;
|
|
6979
7088
|
/** Put the record away (the rail's close). Absent on a page of its own. */
|
|
6980
7089
|
onClose?: (() => void) | undefined;
|
|
6981
7090
|
/**
|
|
@@ -6999,8 +7108,8 @@ declare const BODY_COLUMN_NAME = "Notes";
|
|
|
6999
7108
|
/** How long a pause in typing is before the body is written. */
|
|
7000
7109
|
declare const BODY_SAVE_PAUSE_MS = 900;
|
|
7001
7110
|
declare function RecordBody({ tableId, recordId, className }: {
|
|
7002
|
-
tableId: Uuid;
|
|
7003
|
-
recordId: Uuid;
|
|
7111
|
+
tableId: Uuid$1;
|
|
7112
|
+
recordId: Uuid$1;
|
|
7004
7113
|
className?: string | undefined;
|
|
7005
7114
|
}): react.JSX.Element;
|
|
7006
7115
|
|
|
@@ -7073,7 +7182,7 @@ declare function copyNameFor(name: string): string;
|
|
|
7073
7182
|
/** One line of progress, in a person's words. */
|
|
7074
7183
|
declare function duplicateProgressWords(p: TableDuplicateProgress): string;
|
|
7075
7184
|
interface TableDuplicateDialogProps {
|
|
7076
|
-
tableId: Uuid
|
|
7185
|
+
tableId: Uuid;
|
|
7077
7186
|
name: string;
|
|
7078
7187
|
open: boolean;
|
|
7079
7188
|
onOpenChange: (open: boolean) => void;
|
|
@@ -7083,7 +7192,7 @@ interface TableDuplicateDialogProps {
|
|
|
7083
7192
|
declare function TableDuplicateDialog({ tableId, name, open, onOpenChange, onDuplicated }: TableDuplicateDialogProps): react.JSX.Element;
|
|
7084
7193
|
|
|
7085
7194
|
/** The two references a table gives, in the words a person reads. Pure. */
|
|
7086
|
-
declare function tableReferenceChoices(tableId: Uuid
|
|
7195
|
+
declare function tableReferenceChoices(tableId: Uuid, name: string): Array<{
|
|
7087
7196
|
id: string;
|
|
7088
7197
|
label: string;
|
|
7089
7198
|
reference: ContentTransferReference;
|
|
@@ -7094,29 +7203,13 @@ declare function TableReferenceDialog({ table, open, onOpenChange, }: {
|
|
|
7094
7203
|
onOpenChange: (open: boolean) => void;
|
|
7095
7204
|
}): react.JSX.Element;
|
|
7096
7205
|
|
|
7097
|
-
/** The columns a record may be named by, in the table's order. Pure. */
|
|
7098
|
-
declare function rowLabelChoices(fields: readonly Field$1[]): Array<{
|
|
7099
|
-
value: string;
|
|
7100
|
-
label: string;
|
|
7101
|
-
}>;
|
|
7102
|
-
/** The patch that keeps a description: the table's other metadata is carried, never dropped. Pure. */
|
|
7103
|
-
declare function descriptionPatch(table: Pick<Table$1, "metadata">, text: string): {
|
|
7104
|
-
metadata: Record<string, unknown>;
|
|
7105
|
-
};
|
|
7106
|
-
declare function TableDetails({ tableId, table, fields, onSaved, }: {
|
|
7107
|
-
tableId: Uuid;
|
|
7108
|
-
table: Table$1;
|
|
7109
|
-
fields: readonly Field$1[];
|
|
7110
|
-
onSaved?: (() => void) | undefined;
|
|
7111
|
-
}): react.JSX.Element;
|
|
7112
|
-
|
|
7113
7206
|
/** What a "the app's code depends on this table" refusal names, or null for any other refusal. */
|
|
7114
7207
|
declare function codeDependsRefusal(error: RecordsError | null | undefined): {
|
|
7115
7208
|
slug: string;
|
|
7116
7209
|
declaredIn: string | null;
|
|
7117
7210
|
} | null;
|
|
7118
7211
|
interface ArchiveDeliberatelyDialogProps {
|
|
7119
|
-
tableId: Uuid
|
|
7212
|
+
tableId: Uuid;
|
|
7120
7213
|
name: string;
|
|
7121
7214
|
slug: string;
|
|
7122
7215
|
declaredIn: string | null;
|
|
@@ -7201,4 +7294,4 @@ declare function RecordsSkeleton({ layout, embedded, rows, className }: RecordsS
|
|
|
7201
7294
|
*/
|
|
7202
7295
|
declare function TablePageSkeleton({ layout: layoutAsked, embedded, rows, tableId, className, }: RecordsSkeletonProps): react.JSX.Element;
|
|
7203
7296
|
|
|
7204
|
-
export { ABSENCE_WORD_LABEL, ABSENCE_WORD_VALUES, ACTION_KINDS, ARCHIVED_NEVER_DESTROYED, ARCHIVE_MEANS, ASK_EXAMPLE, type AbsenceWord, AccentSwatches, type AccentSwatchesProps, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, type AnnounceTableArchived, type AppletPageBlock, ArchiveDeliberatelyDialog, type ArchiveDeliberatelyDialogProps, ArchivedDisclosure, type ArchivedDisclosureProps, ArchivedPortals, type ArchivedPortalsProps, ArchivedView, type ArchivedViewProps, type AskRead, BODY_COLUMN_NAME, BODY_SAVE_PAUSE_MS, BOOKING_NOT_HERE_LINE, BOOKING_PAGE_STATE_LABEL, BOOKING_PAGE_STATE_VALUES, BookingBuilder, type BookingBuilderProps, type BookingPageState, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, type ButtonPageBlock, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CHECKLIST_REQUIREMENT_KINDS, CHECKLIST_REQUIREMENT_LABEL, CONDITION_OPS, CONTEXT_POLICY_LABEL, ADDABLE_TYPES as CUSTOM_FIELD_ADDABLE_TYPES, type CalendarMode, CalendarView, type CalendarViewProps, 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 ChartPageBlock, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, type ChoiceAddition, type ChoiceAsk, ChoiceAskButtons, ChoiceListEditor, type ChoiceListRow, type CombinedRows, CommentThread, type CommentThreadProps, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, type CustomFieldAddRequest, type CustomFieldAddResult, type CustomFieldSetResult, type CustomFieldValuesRequest, type CustomFieldsAgentDoor, type CustomFieldsAgentState, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FOOTER, DEFAULT_VIEW_NAME, DUE_STATE_LABEL, DashboardCanvas, type DashboardCanvasProps, DigestScheduler, type DigestSchedulerProps, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, ENGINEER_TEXT, ENTITY_REFERENCE_KINDS_MISSING, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, EntityBoard, type EntityBoardProps, EntityChartBlock, type EntityChartBlockProps, type EntityColumn, EntityDataScope, EntityGrid, type EntityLayout, EntityReferenceKindPicker, type EntityReferenceKindPickerProps, type EntityRow, type EntitySource, type EntityTable, EntityTablePage, type EntityTablePageProps, ExportMenu, type ExportMenuProps, FIELD_RULE_KIND_LABEL, FIELD_RULE_KIND_VALUES, FIELD_SENSITIVITY_LABEL, FIELD_TYPE_CATALOGUE, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FOOTER_WORDS, 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, type FilterPageBlock, type FooterPlacement, type FormAsked, FormBuilder, type FormBuilderProps, type FormFlow, type FormLook, FormLookFrame, type FormLookFrameProps, FormLookLogo, type FormLookView, type FormPageBlock, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, type FormulaOp, Grid, GridCell, type GridContextRecord, type GridContextSnapshot, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, GuessedFieldType, type HeadingPageBlock, HistoryPanel, type HistoryPanelProps, type HostLayout, INBOX_GROUPINGS, INBOX_VIEWS, IN_MEMORY_QUEUE_REASON, ImportNotice, type ImportNoticeProps, type ImportSource, ImportWizard, type ImportWizardProps, InTableToolbar, type InboxGroup, type InboxGrouping, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LOOK_WORDS, type LabelLookup, type LinkRail, type ListPageBlock, MACHINE_IDENTITY, MANUAL_SORT, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, MOST_NEW_COLUMNS, type MainView, type MoveWritten, MyChecklistSteps, NEEDS_A_SENTENCE, NEW_COLUMN_TYPES, NOT_DRAWN_HERE, NO_AGENT_PORT, NO_CHAT_REASON, 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 NewColumn, type NewColumnType, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, ObjectAction, ObjectActionContextMenuItems, ObjectActionGlyph, ObjectActionIcon, ObjectActionMenuItems, type ObjectActionMenuItemsProps, type OpenRecordsAsk, type OrganizationMember, PAGE_BLOCK_KINDS, PAGE_BLOCK_LABEL, PAGE_KIND, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, PORTAL_NOT_HERE_LINE, PROPOSED_CHANGE_ACT_LABEL, PROPOSED_CHANGE_ACT_VALUES, type PageBlock, type PageBlockKind, PageScreen, type PageScreenProps, type PageView, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, PickOrAdd, type PickOrAddItem, type PickOrAddProps, type PickableFieldType, type PickerTable, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalLookEditor, type PortalLookEditorProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, type ProposedChangeAct, ProvenanceBadge, PublicPicturePicker, type PublicPicturePickerProps, PublicViewPage, type PublicViewPageProps, QUESTION_OPS, QUESTION_SURFACE, type QuestionAnswer, QuestionAnswerView, type QuestionGroup, type QuestionMeasure, type QuestionOp, QuestionPanel, type QuestionPanelProps, type QuestionRow, type QuestionShow, type QuestionSpec, RECORDS_GRID_ROW_PX, RECORDS_SKELETON_LAYOUTS, ROLLUP_AGG_LABEL, ROLLUP_AGG_VALUES, RULE_NOT_HERE_LINE, type ReaskContext, type ReasonGroup, type RecordActionHost, RecordActionMenu, type RecordActionMenuProps, type RecordActionSubject, type RecordActionsInput, RecordBody, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, type RecordMoves, type RecordPageBlock, RecordPanel, type RecordPanelProps, RecordValue, RecordsMount, type RecordsMountProps, RecordsSkeleton, type RecordsSkeletonLayout, type RecordsSkeletonProps, RecordsTableCard, type RecordsTableCardProps, type RecordsUiHost, RecordsUiProvider, ReferenceBuilder, type ReferenceBuilderProps, type ReferenceChoice, RefusalLine, RefusalNotice, type RefusedRow, type RelationFieldType, RelationPicker, type RelationPickerProps, type RenderTextSlot, type ResolveName, type RichTextEditProps, type RollupAgg, SAVED_VIEWS_UNAVAILABLE, SAVE_TO_TABLE_TYPES, SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS, SECTIONS_UNKNOWN, SERIES_COLORS, SHARE_NOT_YOURS_LINE, SIGNED_WORD, SOMEBODY, STAGE_RULE_ON_FAIL_LABEL, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, STORE_KEEPS_TIMELINE, STORE_KEPT_LAYOUTS, SUBSCRIPTION_CADENCES, SUBSCRIPTION_CADENCE_LABEL, SUBSCRIPTION_CHANNEL_LABEL, SUBSCRIPTION_CHANNEL_VALUES, SaveToTable, type SaveToTableProps, type SaveToTableSource, type SavedDashboard, type SavedForm, type SavedQuestion, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, ShowListsToggle, type ShownViewReport, SignBlock, type SignBlockProps, SignaturePad, SignatureValue, type SnoozeChoice, type SortStateAction, SortStateControl, type SortStateControlProps, StageRulesSection, type StageRulesSectionProps, type StandardColumn, StandardRecordForm, type StandardRecordFormProps, StepRow, type SubscriptionChannel, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NAME_MAX, TABLE_NOT_REACHABLE, TABLE_TOOLBAR_ROW_CLASS, THE_SYSTEM, TIMELINE_ZOOMS, TableActionHost, TableAsk, type TableAskProps, TableDetails, TableDuplicateDialog, type TableDuplicateDialogProps, TableFoundationSwitch, type TableLane, type TableOpening, TablePage, type TablePageActionHost, type TablePageHeaderChrome, type TablePageProps, TablePageSkeleton, type TablePageSource, type TablePickerEntries, type TablePickerEntry, TableReferenceDialog, TableRenameDialog, TableRestoreRefused, type TableRights, TableSettings, type TableSettingsProps, TableShape, TableToolbarSlotContext, TablesHome, type TablesHomeProps, TemplatePreview, type TemplatePreviewProps, type TextPageBlock, type ThroughCondition, type TimelineSettings, TimelineView, type TimelineViewProps, type TimelineZoom, type TitleRepeats, type TrackedVersion, UNREAD_RECORD_LABEL, type UseSystemTableState, VIEW_ADDRESS_KEYS, VIEW_KEYS, VIEW_LAYOUTS, VIEW_NEEDS, VIEW_NOT_SAVED_YET, VISIBILITY_LANES, VISIBILITY_LANE_TITLE, type ViewAddressSort, type ViewAddressState, ViewBar, type ViewBarProps, type ViewKeyDeclaration, type ViewKeyLayout, type ViewKeyWriter, type ViewLayout, type ViewLook, type ViewNeed, type ViewNeedKind, ViewNeeds, type ViewNeedsProps, type ViewSettings, type ViewSettingsPatch, type ViewSort, type ViewSortKey, ViewSwitcher, type ViewSwitcherProps, type VisibilityLane, WITHHELD_RECORD_LABEL, WITHHELD_WORD, WORK_APPROVAL_STATES, WORK_APPROVAL_STATE_LABEL, WORK_DUE_STATES, WORK_INBOX_KINDS, WORK_INBOX_KIND_GROUP_LABEL, WORK_INBOX_KIND_LABEL, WhatYouMayDo, WhereItLives, type WhereItLivesProps, type WhoChanged, WhoChangedSource, WithheldValue, actorBadge, actorWords, addDays, announceTableArchived, applyLook, archiveConfirmSentence, archivedRowLine, asRefusal, askExampleFor, askQuestion, askableFields, blockFromSpec, bodyFieldOf, bodyForReading, bodyFromKeys, calendarDayLabel, calendarDayOf, cameFromLine, cardTitleField, cardWords, carriesTimeOfDay, cellState, choiceAddition, choiceAskSentence, choiceListPatch, choiceNudgeOf, choiceRowsFrom, chooseSurface, codeDependsRefusal, colorFromTheValue, columnDeclarationFor, columnForField, columnFromName, columnNamesFrom, columnsFrom, combineFilter, combineRows, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, copyNameFor, currencyCodeFor, customFieldRequestProblems, dashboardDeclareArgs, dashboardFromSummary, dateFormatFor, dateText, dayAt, dayKeyOf, daysBetween, declareView, defaultViewOf, descriptionPatch, designatedLayoutOf, drawnBelowOnPage, drawnSignatureOf, drillDimensionsOf, drillMeasuresOf, drillPathsOf, drillWhere, duplicateProgressWords, editorKindFor, ensureSystemTable, entityCellValue, entityChoiceColumns, entityNameColumn, entityReferenceSpec, entityShownColumns, entityTableColumns, entityTitleColumn, entityValueText, envelopeFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, fieldsForNewColumns, filterTargets, flatWhere, footerOf, formDeclareArgs, formFromSummary, formLookDocument, formLookFromDocument, formLookView, formPresentation, formatForField, freeColumnName, freshFormName, gridContextKey, gridContextSnapshot, groupInbox, groupLabel, groupReasons, groupableFields, handOrderLine, handOrderSortState, hasTimePart, hintForAPerson, hintIsMachineIdentity, idsOf, isChoiceAddition, isDateField, isEngineerText, isFoundationTable, isId, isKeptTable, isMachineIdentity, isPage, isParityFieldType, isPlainFieldType, isRelationFieldType, isSignatureField, isValueSet, isViewAddressEmpty, keepLook, keptByTheApp, keyFor, kindsWithNoChoice, laneFor, lastChangeSentence, lookDiffers, lookDocument, lookFromDocument, lookPart, looksLikeId, machineIdentityIn, mayNotRestoreLine, measurableFields, memberName, moveRecordValue, newQuestion, nextInWords, nextSummaryAt, notAChoiceSentence, onlyCandidate, openingRail, openingView, packOverlaps, pageBlocksOf, pagePresentation, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pickableTypeOf, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, previewWords, publiclyAnswerable, questionArchive, questionFromDefinition, questionFromWords, questionSave, questionsOf, railFromParam, readLooks, recordActions, recordLink, recordName, recordNameIn, recordsDataSource, refusal, refusalForAPerson, refusalFromThrown, refusalLineForAPerson, refusalOr, refusedFileName, refusedRowsCsv, renderValue, rescheduledValue, resolveTableStyle, revokeConsequence, rowLabelChoices, rowName, rowNameIn, runToNotice, sameRecordLikely, sameViewAddress, saveToViewPlan, saveViewPatch, scalarText, seedIsSatisfied, shapesOfSource, shareUnavailableReason, signatureFileIn, signatureFileOf, signatureWords, singularNoun, skeletonLayoutFor, snoozeChoices, specFromBlock, standardTokenOf, starterPageBlocks, storeDecidesRights, storeKeepsLayout, storePublishesKind, styleFromDecorations, submissionStamp, surfaceChosen, tableName, tableNameProblem, tableOpening, tablePickerEntries, tableReferenceChoices, tableRightsAt, titleRepeats, unknownRailLine, unknownViewLine, unreadableKeys, useCanShare, useChoiceNudge, useDrill, useDrillAnswers, useDrillDefinition, useEmbedHandshake, useEnrichCells, useEntityTable, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, usePickerTables, useRecordActionHost, useRecordLabels, useRecordMoves, useRecordRights, useRecordsUi, useRowColorBy, useRowRights, useSystemTable, useTableRights, useTableToolbarSlot, useTemplatePreview, useViewRecords, useWhoChanged, viewActions, viewAddressFromParams, viewAddressToParams, viewDocument, viewFromRow, viewKeysFor, viewNeedFor, viewPatchDocument, viewSettings, viewSettingsFor, viewSettingsPatch, visibilityLaneFor, whatIsMissing, whatIsMissingForEntityReference, whatTheChoiceListIsMissing, whenWords, whyNotAskable, withheldNoticeOf, withheldSentence, withoutAddition, wordsList };
|
|
7297
|
+
export { ABSENCE_WORD_LABEL, ABSENCE_WORD_VALUES, ACTION_KINDS, ARCHIVED_NEVER_DESTROYED, ARCHIVE_MEANS, ASK_EXAMPLE, type AbsenceWord, AccentSwatches, type AccentSwatchesProps, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, type AnnounceTableArchived, type AppletPageBlock, ArchiveDeliberatelyDialog, type ArchiveDeliberatelyDialogProps, ArchivedDisclosure, type ArchivedDisclosureProps, ArchivedPortals, type ArchivedPortalsProps, ArchivedView, type ArchivedViewProps, type AskRead, BODY_COLUMN_NAME, BODY_SAVE_PAUSE_MS, BOOKING_NOT_HERE_LINE, BOOKING_PAGE_STATE_LABEL, BOOKING_PAGE_STATE_VALUES, BookingBuilder, type BookingBuilderProps, type BookingPageState, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, type ButtonPageBlock, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CHECKLIST_REQUIREMENT_KINDS, CHECKLIST_REQUIREMENT_LABEL, CONDITION_OPS, CONTEXT_POLICY_LABEL, ADDABLE_TYPES as CUSTOM_FIELD_ADDABLE_TYPES, type CalendarMode, CalendarView, type CalendarViewProps, 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 ChartPageBlock, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, type ChoiceAddition, type ChoiceAsk, ChoiceAskButtons, ChoiceListEditor, type ChoiceListRow, type CombinedRows, CommentThread, type CommentThreadProps, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, type CustomFieldAddRequest, type CustomFieldAddResult, type CustomFieldSetResult, type CustomFieldValuesRequest, type CustomFieldsAgentDoor, type CustomFieldsAgentState, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FOOTER, DEFAULT_VIEW_NAME, DUE_STATE_LABEL, DashboardCanvas, type DashboardCanvasProps, DigestScheduler, type DigestSchedulerProps, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, ENGINEER_TEXT, ENTITY_REFERENCE_KINDS_MISSING, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, EntityBoard, type EntityBoardProps, EntityChartBlock, type EntityChartBlockProps, type EntityColumn, EntityDataScope, EntityGrid, type EntityLayout, EntityReferenceKindPicker, type EntityReferenceKindPickerProps, type EntityRow, type EntitySource, type EntityTable, EntityTablePage, type EntityTablePageProps, ExportMenu, type ExportMenuProps, FIELD_RULE_KIND_LABEL, FIELD_RULE_KIND_VALUES, FIELD_SENSITIVITY_LABEL, FIELD_TYPE_CATALOGUE, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FOOTER_WORDS, FORMULA_FUNCTIONS, 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, type FilterPageBlock, type FooterPlacement, type FormAsked, FormBuilder, type FormBuilderProps, type FormFlow, type FormLook, FormLookFrame, type FormLookFrameProps, FormLookLogo, type FormLookView, type FormPageBlock, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, type FormulaHelpAsk, type FormulaOp, Grid, GridCell, type GridContextRecord, type GridContextSnapshot, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, GuessedFieldType, type HeadingPageBlock, HistoryPanel, type HistoryPanelProps, type HostLayout, INBOX_GROUPINGS, INBOX_VIEWS, IN_MEMORY_QUEUE_REASON, ImportNotice, type ImportNoticeProps, type ImportSource, ImportWizard, type ImportWizardProps, InTableToolbar, type InboxGroup, type InboxGrouping, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LOOK_WORDS, type LabelLookup, type LinkRail, type ListPageBlock, MACHINE_IDENTITY, MANUAL_SORT, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, MOST_NEW_COLUMNS, type MainView, type MoveWritten, MyChecklistSteps, NEEDS_A_SENTENCE, NEW_COLUMN_TYPES, NOT_DRAWN_HERE, NO_AGENT_PORT, NO_CHAT_REASON, 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 NewColumn, type NewColumnType, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, ObjectAction, ObjectActionContextMenuItems, ObjectActionGlyph, ObjectActionIcon, ObjectActionMenuItems, type ObjectActionMenuItemsProps, type OpenRecordsAsk, type OrganizationMember, PAGE_BLOCK_KINDS, PAGE_BLOCK_LABEL, PAGE_KIND, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, PORTAL_NOT_HERE_LINE, PROPOSED_CHANGE_ACT_LABEL, PROPOSED_CHANGE_ACT_VALUES, type PageBlock, type PageBlockKind, PageScreen, type PageScreenProps, type PageView, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, PickOrAdd, type PickOrAddItem, type PickOrAddProps, type PickableFieldType, type PickerTable, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalLookEditor, type PortalLookEditorProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, type ProposedChangeAct, ProvenanceBadge, PublicPicturePicker, type PublicPicturePickerProps, PublicViewPage, type PublicViewPageProps, QUESTION_OPS, QUESTION_SURFACE, type QuestionAnswer, QuestionAnswerView, type QuestionGroup, type QuestionMeasure, type QuestionOp, QuestionPanel, type QuestionPanelProps, type QuestionRow, type QuestionShow, type QuestionSpec, RECORDS_GRID_ROW_PX, RECORDS_SKELETON_LAYOUTS, ROLLUP_AGG_LABEL, ROLLUP_AGG_VALUES, RULE_NOT_HERE_LINE, type ReaskContext, type ReasonGroup, type RecordActionHost, RecordActionMenu, type RecordActionMenuProps, type RecordActionSubject, type RecordActionsInput, RecordBody, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, type RecordMoves, type RecordPageBlock, RecordPanel, type RecordPanelProps, RecordValue, RecordsMount, type RecordsMountProps, RecordsSkeleton, type RecordsSkeletonLayout, type RecordsSkeletonProps, RecordsTableCard, type RecordsTableCardProps, type RecordsUiHost, RecordsUiProvider, ReferenceBuilder, type ReferenceBuilderProps, type ReferenceChoice, RefusalLine, RefusalNotice, type RefusedRow, type RelationFieldType, RelationPicker, type RelationPickerProps, type RenderTextSlot, type ResolveName, type RichTextEditProps, type RollupAgg, SAVED_VIEWS_UNAVAILABLE, SAVE_TO_TABLE_TYPES, SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS, SECTIONS_UNKNOWN, SERIES_COLORS, SHARE_NOT_YOURS_LINE, SIGNED_WORD, SOMEBODY, STAGE_RULE_ON_FAIL_LABEL, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, STORE_KEEPS_TIMELINE, STORE_KEPT_LAYOUTS, SUBSCRIPTION_CADENCES, SUBSCRIPTION_CADENCE_LABEL, SUBSCRIPTION_CHANNEL_LABEL, SUBSCRIPTION_CHANNEL_VALUES, SaveToTable, type SaveToTableProps, type SaveToTableSource, type SavedDashboard, type SavedForm, type SavedQuestion, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, ShowListsToggle, type ShownViewReport, SignBlock, type SignBlockProps, SignaturePad, SignatureValue, type SnoozeChoice, type SortStateAction, SortStateControl, type SortStateControlProps, StageRulesSection, type StageRulesSectionProps, type StandardColumn, StandardRecordForm, type StandardRecordFormProps, StepRow, type SubscriptionChannel, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NAME_MAX, TABLE_NOT_REACHABLE, TABLE_TOOLBAR_ROW_CLASS, THE_SYSTEM, TIMELINE_ZOOMS, TableActionHost, TableAsk, type TableAskProps, TableDetails, TableDuplicateDialog, type TableDuplicateDialogProps, TableFoundationSwitch, type TableLane, type TableOpening, TablePage, type TablePageActionHost, type TablePageHeaderChrome, type TablePageProps, TablePageSkeleton, type TablePageSource, type TablePickerEntries, type TablePickerEntry, TableReferenceDialog, TableRenameDialog, TableRestoreRefused, type TableRights, TableSettings, type TableSettingsAgent, type TableSettingsProps, type TableSettingsSnapshot, TableShape, TableToolbarSlotContext, TablesHome, type TablesHomeProps, TemplatePreview, type TemplatePreviewProps, type TextPageBlock, type ThroughCondition, type TimelineSettings, TimelineView, type TimelineViewProps, type TimelineZoom, type TitleRepeats, type TrackedVersion, UNREAD_RECORD_LABEL, type UseSystemTableState, VIEW_ADDRESS_KEYS, VIEW_KEYS, VIEW_LAYOUTS, VIEW_NEEDS, VIEW_NOT_SAVED_YET, VISIBILITY_LANES, VISIBILITY_LANE_TITLE, type ViewAddressSort, type ViewAddressState, ViewBar, type ViewBarProps, type ViewKeyDeclaration, type ViewKeyLayout, type ViewKeyWriter, type ViewLayout, type ViewLook, type ViewNeed, type ViewNeedKind, ViewNeeds, type ViewNeedsProps, type ViewSettings, type ViewSettingsPatch, type ViewSort, type ViewSortKey, ViewSwitcher, type ViewSwitcherProps, type VisibilityLane, WITHHELD_RECORD_LABEL, WITHHELD_WORD, WORK_APPROVAL_STATES, WORK_APPROVAL_STATE_LABEL, WORK_DUE_STATES, WORK_INBOX_KINDS, WORK_INBOX_KIND_GROUP_LABEL, WORK_INBOX_KIND_LABEL, WhatYouMayDo, WhereItLives, type WhereItLivesProps, type WhoChanged, WhoChangedSource, WithheldValue, actionForAgent, actorBadge, actorWords, addDays, announceTableArchived, applyLook, archiveConfirmSentence, archivedRowLine, asRefusal, askExampleFor, askQuestion, askableFields, blockFromSpec, bodyFieldOf, bodyForReading, bodyFromKeys, calendarDayLabel, calendarDayOf, cameFromLine, cardTitleField, cardWords, carriesTimeOfDay, cellState, choiceAddition, choiceAskSentence, choiceListPatch, choiceNudgeOf, choiceRowsFrom, chooseSurface, codeDependsRefusal, colorFromTheValue, columnDeclarationFor, columnForField, columnFromName, columnNamesFrom, columnsFrom, combineFilter, combineRows, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, copyNameFor, currencyCodeFor, customFieldRequestProblems, dashboardDeclareArgs, dashboardFromSummary, dateFormatFor, dateText, dayAt, dayKeyOf, daysBetween, declareView, defaultViewOf, descriptionPatch, designatedLayoutOf, drawnBelowOnPage, drawnSignatureOf, drillDimensionsOf, drillMeasuresOf, drillPathsOf, drillWhere, duplicateProgressWords, editorKindFor, ensureSystemTable, entityCellValue, entityChoiceColumns, entityNameColumn, entityReferenceSpec, entityShownColumns, entityTableColumns, entityTitleColumn, entityValueText, envelopeFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, fieldsForNewColumns, filterTargets, flatWhere, footerOf, formDeclareArgs, formFromSummary, formLookDocument, formLookFromDocument, formLookView, formPresentation, formatForField, freeColumnName, freshFormName, gridContextKey, gridContextSnapshot, groupInbox, groupLabel, groupReasons, groupableFields, handOrderLine, handOrderSortState, hasTimePart, hintForAPerson, hintIsMachineIdentity, idsOf, isChoiceAddition, isDateField, isEngineerText, isFoundationTable, isId, isKeptTable, isMachineIdentity, isPage, isParityFieldType, isPlainFieldType, isRelationFieldType, isSignatureField, isValueSet, isViewAddressEmpty, keepLook, keptByTheApp, keyFor, kindsWithNoChoice, laneFor, lastChangeSentence, lookDiffers, lookDocument, lookFromDocument, lookPart, looksLikeId, machineIdentityIn, mayNotRestoreLine, measurableFields, memberName, moveRecordValue, newQuestion, nextInWords, nextSummaryAt, notAChoiceSentence, onlyCandidate, openingRail, openingView, packOverlaps, pageBlocksOf, pagePresentation, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pickableTypeOf, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, previewWords, publiclyAnswerable, questionArchive, questionFromDefinition, questionFromWords, questionSave, questionsOf, railFromParam, readLooks, recordActions, recordLink, recordName, recordNameIn, recordsDataSource, refusal, refusalForAPerson, refusalFromThrown, refusalLineForAPerson, refusalOr, refusedFileName, refusedRowsCsv, renderValue, rescheduledValue, resolveTableStyle, revokeConsequence, rowActionFromAgent, rowLabelChoices, rowName, rowNameIn, runToNotice, sameRecordLikely, sameViewAddress, saveTableDescription, saveToViewPlan, saveViewPatch, scalarText, seedIsSatisfied, shapesOfSource, shareUnavailableReason, signatureFileIn, signatureFileOf, signatureWords, singularNoun, skeletonLayoutFor, snoozeChoices, specFromBlock, standardTokenOf, starterPageBlocks, stepFromAgent, storeDecidesRights, storeKeepsLayout, storePublishesKind, styleFromDecorations, submissionStamp, surfaceChosen, tableName, tableNameProblem, tableOpening, tablePickerEntries, tableReferenceChoices, tableRightsAt, titleRepeats, unknownRailLine, unknownViewLine, unreadableKeys, useCanShare, useChoiceNudge, useDrill, useDrillAnswers, useDrillDefinition, useEmbedHandshake, useEnrichCells, useEntityTable, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, usePickerTables, useRecordActionHost, useRecordLabels, useRecordMoves, useRecordRights, useRecordsUi, useRowColorBy, useRowRights, useSystemTable, useTableRights, useTableToolbarSlot, useTemplatePreview, useViewRecords, useWhoChanged, viewActions, viewAddressFromParams, viewAddressToParams, viewDocument, viewFromRow, viewKeysFor, viewNeedFor, viewPatchDocument, viewSettings, viewSettingsFor, viewSettingsPatch, visibilityLaneFor, whatIsMissing, whatIsMissingForEntityReference, whatTheChoiceListIsMissing, whenWords, whyNotAskable, withheldNoticeOf, withheldSentence, withoutAddition, wordsList };
|