@ai-matrx/records-ui 0.103.6 → 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 +12 -0
- package/dist/index.cjs +16359 -15645
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +401 -303
- package/dist/index.d.ts +401 -303
- package/dist/index.js +16157 -15443
- package/dist/index.js.map +1 -1
- package/dist/pickers.cjs +408 -353
- package/dist/pickers.cjs.map +1 -1
- package/dist/pickers.js +369 -314
- package/dist/pickers.js.map +1 -1
- package/package.json +5 -5
package/dist/index.d.cts
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.cjs';
|
|
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.cjs';
|
|
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
|
/**
|
|
@@ -305,6 +336,8 @@ type GridPresentation = {
|
|
|
305
336
|
* organization that freezes the first column — an empty `frozen` cannot say that.
|
|
306
337
|
*/
|
|
307
338
|
wrap?: boolean;
|
|
339
|
+
/** NOTION'S "WRAP COLUMN" (N5): the columns that wrap their text when the view as a whole does not. */
|
|
340
|
+
wrapColumns?: string[];
|
|
308
341
|
fit?: "auto" | "fit" | "scroll";
|
|
309
342
|
freezeFirst?: boolean;
|
|
310
343
|
/**
|
|
@@ -413,12 +446,12 @@ declare function resolveTableStyle(decorations: TableDecorations | null | undefi
|
|
|
413
446
|
|
|
414
447
|
/** One record as the grid shows it: its id, its name (the row label) and its masked document. */
|
|
415
448
|
interface GridContextRecord {
|
|
416
|
-
id: Uuid
|
|
449
|
+
id: Uuid;
|
|
417
450
|
title: string;
|
|
418
451
|
document: RecordDocument;
|
|
419
452
|
}
|
|
420
453
|
interface GridContextSnapshot {
|
|
421
|
-
tableId: Uuid
|
|
454
|
+
tableId: Uuid;
|
|
422
455
|
tableName: string;
|
|
423
456
|
/** The table's own description (`metadata.description`), when it has one. */
|
|
424
457
|
tableDescription: string | null;
|
|
@@ -432,7 +465,7 @@ interface GridContextSnapshot {
|
|
|
432
465
|
canWrite: boolean;
|
|
433
466
|
/** The cell the cursor is on: its record, its Field key and the value drawn in it. */
|
|
434
467
|
currentCell: {
|
|
435
|
-
rowId: Uuid
|
|
468
|
+
rowId: Uuid;
|
|
436
469
|
key: string;
|
|
437
470
|
value: unknown;
|
|
438
471
|
} | null;
|
|
@@ -442,7 +475,7 @@ interface GridContextSnapshot {
|
|
|
442
475
|
selectedRange: {
|
|
443
476
|
tsv: string;
|
|
444
477
|
cellCount: number;
|
|
445
|
-
rowIds: Uuid
|
|
478
|
+
rowIds: Uuid[];
|
|
446
479
|
keys: string[];
|
|
447
480
|
} | null;
|
|
448
481
|
/** The rows ticked with the row boxes. */
|
|
@@ -465,7 +498,7 @@ interface GridCursor {
|
|
|
465
498
|
tsv: string;
|
|
466
499
|
}
|
|
467
500
|
declare function gridContextSnapshot(args: {
|
|
468
|
-
tableId: Uuid
|
|
501
|
+
tableId: Uuid;
|
|
469
502
|
table: Table | null;
|
|
470
503
|
fields: readonly Field[];
|
|
471
504
|
/** The Field keys on screen, in order. */
|
|
@@ -476,7 +509,7 @@ declare function gridContextSnapshot(args: {
|
|
|
476
509
|
cursor: GridCursor | null;
|
|
477
510
|
/** The cell whose editor is open, which wins over the cursor. */
|
|
478
511
|
editing: {
|
|
479
|
-
rowId: Uuid
|
|
512
|
+
rowId: Uuid;
|
|
480
513
|
key: string;
|
|
481
514
|
draft: unknown;
|
|
482
515
|
} | null;
|
|
@@ -536,7 +569,7 @@ interface HostLayout {
|
|
|
536
569
|
label: string;
|
|
537
570
|
/** Draw it for this table, with the question the address asked when there is one. */
|
|
538
571
|
render: (args: {
|
|
539
|
-
tableId: Uuid
|
|
572
|
+
tableId: Uuid;
|
|
540
573
|
filter?: StoreFilter | undefined;
|
|
541
574
|
/**
|
|
542
575
|
* Opens the page's own export (CSV, XLSX, copy and transform) — the one export a table has,
|
|
@@ -576,10 +609,10 @@ interface RichTextEditProps {
|
|
|
576
609
|
}
|
|
577
610
|
interface ReferenceChipRef {
|
|
578
611
|
token: string;
|
|
579
|
-
id: Uuid
|
|
612
|
+
id: Uuid;
|
|
580
613
|
label: string | null;
|
|
581
614
|
/** For `token: "record"`, the Table the relation points into. */
|
|
582
|
-
tableId?: Uuid
|
|
615
|
+
tableId?: Uuid | undefined;
|
|
583
616
|
/**
|
|
584
617
|
* The record it names sits in Archived items. An archive keeps every reference to what it
|
|
585
618
|
* archived (chair ruling B3-21), so the chip still names it and draws the archived state.
|
|
@@ -637,12 +670,32 @@ interface RecordsUiHost {
|
|
|
637
670
|
label: string;
|
|
638
671
|
onChange: (name: string) => void;
|
|
639
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;
|
|
640
693
|
/** Answer the rights question for one table. Synchronous: a screen renders now. */
|
|
641
694
|
rights?: (table: Table) => TableRights;
|
|
642
695
|
/** Where a record's own page lives, when the host has one. A peek is used when it does not. */
|
|
643
696
|
hrefForRecord?: (args: {
|
|
644
697
|
table: Table;
|
|
645
|
-
recordId: Uuid
|
|
698
|
+
recordId: Uuid;
|
|
646
699
|
}) => string | undefined;
|
|
647
700
|
/**
|
|
648
701
|
* OPTIONAL. WHERE A FILE OPENS. A value too big for one cell is kept as a file and the cell
|
|
@@ -651,7 +704,7 @@ interface RecordsUiHost {
|
|
|
651
704
|
* screen cannot open — never a dead link.
|
|
652
705
|
*/
|
|
653
706
|
hrefForFile?: (args: {
|
|
654
|
-
fileId: Uuid
|
|
707
|
+
fileId: Uuid;
|
|
655
708
|
}) => string | undefined;
|
|
656
709
|
/**
|
|
657
710
|
* OPTIONAL. READ A FILE'S WHOLE TEXT, so an export writes a big value's whole content rather
|
|
@@ -659,7 +712,7 @@ interface RecordsUiHost {
|
|
|
659
712
|
* the file (`wholeValueNotRead`) — never the words passed off as the value.
|
|
660
713
|
*/
|
|
661
714
|
readFileText?: (args: {
|
|
662
|
-
fileId: Uuid
|
|
715
|
+
fileId: Uuid;
|
|
663
716
|
}) => Promise<string>;
|
|
664
717
|
/**
|
|
665
718
|
* OPTIONAL. A FILE DRAWN AS A PICTURE — the gallery card's cover when the view's picture column
|
|
@@ -668,7 +721,7 @@ interface RecordsUiHost {
|
|
|
668
721
|
* the cover says in words that this screen cannot draw files, never a broken image.
|
|
669
722
|
*/
|
|
670
723
|
fileImage?: (args: {
|
|
671
|
-
fileId: Uuid
|
|
724
|
+
fileId: Uuid;
|
|
672
725
|
alt: string;
|
|
673
726
|
}) => ReactNode;
|
|
674
727
|
/**
|
|
@@ -748,7 +801,7 @@ interface RecordsUiHost {
|
|
|
748
801
|
*/
|
|
749
802
|
upload?: (file: File) => Promise<{
|
|
750
803
|
ok: true;
|
|
751
|
-
fileId: Uuid
|
|
804
|
+
fileId: Uuid;
|
|
752
805
|
} | {
|
|
753
806
|
ok: false;
|
|
754
807
|
reason: string;
|
|
@@ -767,7 +820,7 @@ interface RecordsUiHost {
|
|
|
767
820
|
pickFiles?: (ask: {
|
|
768
821
|
multiple: boolean;
|
|
769
822
|
accept?: string;
|
|
770
|
-
}) => Promise<Uuid
|
|
823
|
+
}) => Promise<Uuid[] | null>;
|
|
771
824
|
/**
|
|
772
825
|
* Where this app serves its PUBLIC pages from, when that is not the origin
|
|
773
826
|
* the screen is running on. A form's link is built here, so an owner copying
|
|
@@ -787,7 +840,7 @@ interface RecordsUiHost {
|
|
|
787
840
|
* an empty picker that looks like "you have no views".
|
|
788
841
|
*/
|
|
789
842
|
savedViews?: () => Promise<Array<{
|
|
790
|
-
id: Uuid
|
|
843
|
+
id: Uuid;
|
|
791
844
|
name: string;
|
|
792
845
|
}>>;
|
|
793
846
|
/**
|
|
@@ -825,8 +878,8 @@ interface RecordsUiHost {
|
|
|
825
878
|
* stamped with it). Unbound, nothing is drawn.
|
|
826
879
|
*/
|
|
827
880
|
recordSections?: (target: {
|
|
828
|
-
tableId: Uuid
|
|
829
|
-
recordId: Uuid
|
|
881
|
+
tableId: Uuid;
|
|
882
|
+
recordId: Uuid;
|
|
830
883
|
}) => ReactNode;
|
|
831
884
|
/**
|
|
832
885
|
* OPTIONAL. THE PLATFORM'S ONE RICH EDITOR, for a record page's body (lane TABLE-EXPERIENCE,
|
|
@@ -856,8 +909,8 @@ interface RecordsUiHost {
|
|
|
856
909
|
* available here.
|
|
857
910
|
*/
|
|
858
911
|
linkRecord?: (target: {
|
|
859
|
-
tableId: Uuid
|
|
860
|
-
recordId: Uuid
|
|
912
|
+
tableId: Uuid;
|
|
913
|
+
recordId: Uuid;
|
|
861
914
|
name: string;
|
|
862
915
|
}) => void;
|
|
863
916
|
/**
|
|
@@ -876,8 +929,8 @@ interface RecordsUiHost {
|
|
|
876
929
|
* not render at all.
|
|
877
930
|
*/
|
|
878
931
|
talkToRecord?: (target: {
|
|
879
|
-
tableId: Uuid
|
|
880
|
-
recordId: Uuid
|
|
932
|
+
tableId: Uuid;
|
|
933
|
+
recordId: Uuid;
|
|
881
934
|
title: string;
|
|
882
935
|
}) => void;
|
|
883
936
|
/**
|
|
@@ -898,8 +951,8 @@ interface RecordsUiHost {
|
|
|
898
951
|
* job, and the agent is handed exactly what the person was looking at.
|
|
899
952
|
*/
|
|
900
953
|
runAgentAction?: (target: {
|
|
901
|
-
tableId: Uuid
|
|
902
|
-
recordId: Uuid
|
|
954
|
+
tableId: Uuid;
|
|
955
|
+
recordId: Uuid;
|
|
903
956
|
title: string;
|
|
904
957
|
action: string;
|
|
905
958
|
prompt: string;
|
|
@@ -988,9 +1041,9 @@ interface RecordsUiHost {
|
|
|
988
1041
|
* Dashboards area lists no pages and offers no "New page" — absent, never dead.
|
|
989
1042
|
*/
|
|
990
1043
|
pageHref?: (target: {
|
|
991
|
-
pageId: Uuid
|
|
1044
|
+
pageId: Uuid;
|
|
992
1045
|
} | {
|
|
993
|
-
newOnTable: Uuid
|
|
1046
|
+
newOnTable: Uuid;
|
|
994
1047
|
}) => string;
|
|
995
1048
|
/**
|
|
996
1049
|
* OPTIONAL. ASK THE AGENT TO CHANGE THIS DASHBOARD (SCR-16).
|
|
@@ -1026,6 +1079,20 @@ interface RecordsUiHost {
|
|
|
1026
1079
|
*/
|
|
1027
1080
|
onAskForOne?: (ask: AgentBuildAsk) => void;
|
|
1028
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
|
+
}
|
|
1029
1096
|
/** What a person is asking an agent to make, and where they were standing. */
|
|
1030
1097
|
interface AgentBuildAsk {
|
|
1031
1098
|
/**
|
|
@@ -1033,7 +1100,7 @@ interface AgentBuildAsk {
|
|
|
1033
1100
|
* agent adds it through the store's field door, held for approval like every agent schema change.
|
|
1034
1101
|
*/
|
|
1035
1102
|
kind: "form" | "booking" | "portal" | "digest" | "column";
|
|
1036
|
-
tableId: Uuid
|
|
1103
|
+
tableId: Uuid;
|
|
1037
1104
|
/** The sentence this package would say. A host opens its composer with it. */
|
|
1038
1105
|
suggestion: string;
|
|
1039
1106
|
}
|
|
@@ -1045,16 +1112,16 @@ interface AgentBuildAsk {
|
|
|
1045
1112
|
* counted, which is the one way this control can lie.
|
|
1046
1113
|
*/
|
|
1047
1114
|
interface OpenRecordsAsk {
|
|
1048
|
-
tableId: Uuid
|
|
1115
|
+
tableId: Uuid;
|
|
1049
1116
|
filter: Record<string, AggregateFilter>;
|
|
1050
1117
|
/** What the person clicked, in words: "Jobs by stage this month · Awaiting parts". */
|
|
1051
1118
|
label: string;
|
|
1052
1119
|
}
|
|
1053
1120
|
/** Which dashboard a re-ask is about, so the agent re-states it rather than making a second one. */
|
|
1054
1121
|
interface ReaskContext {
|
|
1055
|
-
tableId: Uuid
|
|
1122
|
+
tableId: Uuid;
|
|
1056
1123
|
/** Null while the canvas has no dashboard yet — the answer is the first one. */
|
|
1057
|
-
dashboardId: Uuid
|
|
1124
|
+
dashboardId: Uuid | null;
|
|
1058
1125
|
dashboardName: string | null;
|
|
1059
1126
|
}
|
|
1060
1127
|
/**
|
|
@@ -1066,8 +1133,8 @@ interface ReaskContext {
|
|
|
1066
1133
|
interface ShareSubject {
|
|
1067
1134
|
kind: "record" | "table";
|
|
1068
1135
|
/** The store is keyed (organization_id, id); this package never guesses one. */
|
|
1069
|
-
organizationId: Uuid
|
|
1070
|
-
subjectId: Uuid
|
|
1136
|
+
organizationId: Uuid;
|
|
1137
|
+
subjectId: Uuid;
|
|
1071
1138
|
/** What to call it on screen. Never empty — the id's first eight characters at worst. */
|
|
1072
1139
|
name: string;
|
|
1073
1140
|
/** Close the dialog. The control owns the open/closed state, the host owns the dialog. */
|
|
@@ -1095,7 +1162,7 @@ interface PendingCapture {
|
|
|
1095
1162
|
* tell a retry from a second capture.
|
|
1096
1163
|
*/
|
|
1097
1164
|
clientKey: string;
|
|
1098
|
-
tableId: Uuid
|
|
1165
|
+
tableId: Uuid;
|
|
1099
1166
|
payload: Record<string, unknown>;
|
|
1100
1167
|
capturedAt: string;
|
|
1101
1168
|
device: string;
|
|
@@ -1162,7 +1229,7 @@ declare function useTableRights(table: Table | null | undefined): TableRights;
|
|
|
1162
1229
|
* colleague at Editor inside a table she holds at Viewer. The grid used to
|
|
1163
1230
|
* label that row "viewer" while the store let her write to it.
|
|
1164
1231
|
*/
|
|
1165
|
-
declare function useRecordRights(recordId: Uuid
|
|
1232
|
+
declare function useRecordRights(recordId: Uuid | null): WhatYouMayDo;
|
|
1166
1233
|
/**
|
|
1167
1234
|
* The same question for a whole page of records, in ONE call — the door takes a
|
|
1168
1235
|
* list precisely so a grid never makes one call per row.
|
|
@@ -1171,7 +1238,37 @@ declare function useRecordRights(recordId: Uuid$1 | null): WhatYouMayDo;
|
|
|
1171
1238
|
* table level already admits editing, every row it returned is editable and
|
|
1172
1239
|
* there is nothing a per-record answer could add.
|
|
1173
1240
|
*/
|
|
1174
|
-
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
|
+
}>;
|
|
1175
1272
|
|
|
1176
1273
|
/**
|
|
1177
1274
|
* MACHINE IDENTITY, BY SHAPE — never by a list of the sentences we happen to
|
|
@@ -1333,13 +1430,13 @@ declare function cardTitleField(fields: readonly Field[], titleKey: string | nul
|
|
|
1333
1430
|
/** What a person has chosen: the table, and optionally which of its columns to show. */
|
|
1334
1431
|
interface ReferenceChoice {
|
|
1335
1432
|
/** The Table whose records this column offers. `""` until one is picked. */
|
|
1336
|
-
targetTableId: Uuid
|
|
1433
|
+
targetTableId: Uuid | "";
|
|
1337
1434
|
/** Which of that Table's columns to show. `null` = the Table's own reference column. */
|
|
1338
1435
|
display: RelationDisplay | null;
|
|
1339
1436
|
}
|
|
1340
1437
|
interface ReferenceBuilderProps {
|
|
1341
1438
|
/** The Table the column being built lives on, so "this table" can be marked. */
|
|
1342
|
-
tableId: Uuid
|
|
1439
|
+
tableId: Uuid;
|
|
1343
1440
|
value: ReferenceChoice;
|
|
1344
1441
|
onChange: (next: ReferenceChoice) => void;
|
|
1345
1442
|
/**
|
|
@@ -1376,7 +1473,7 @@ interface PersonPickerProps {
|
|
|
1376
1473
|
}
|
|
1377
1474
|
/** A Person record in the kernel Table, as this picker needs to read it. */
|
|
1378
1475
|
interface PersonRecord {
|
|
1379
|
-
id: Uuid
|
|
1476
|
+
id: Uuid;
|
|
1380
1477
|
userId: string | null;
|
|
1381
1478
|
name: string;
|
|
1382
1479
|
}
|
|
@@ -1387,9 +1484,9 @@ declare function memberName(member: OrganizationMember): string;
|
|
|
1387
1484
|
* an agent filling a person field server-side needs exactly the same answer,
|
|
1388
1485
|
* and two implementations of "which record is this person" is two answers.
|
|
1389
1486
|
*/
|
|
1390
|
-
declare function personRecordForMember(client: RecordsClient, personTableId: Uuid
|
|
1487
|
+
declare function personRecordForMember(client: RecordsClient, personTableId: Uuid, people: PersonRecord[], member: OrganizationMember): Promise<{
|
|
1391
1488
|
ok: true;
|
|
1392
|
-
data: Uuid
|
|
1489
|
+
data: Uuid;
|
|
1393
1490
|
} | {
|
|
1394
1491
|
ok: false;
|
|
1395
1492
|
error: RecordsError;
|
|
@@ -1398,23 +1495,23 @@ declare function PersonPicker({ field, value, onChange, disabled, id, className,
|
|
|
1398
1495
|
|
|
1399
1496
|
interface RecordVersions {
|
|
1400
1497
|
/** The version the person saw this record at; waits for the read of freshly drawn rows. `null` = unread. */
|
|
1401
|
-
seen: (id: Uuid
|
|
1498
|
+
seen: (id: Uuid) => Promise<number | null>;
|
|
1402
1499
|
/** The same, for many records at once. */
|
|
1403
|
-
seenMany: (ids: readonly Uuid
|
|
1500
|
+
seenMany: (ids: readonly Uuid[]) => Promise<Map<Uuid, number | null>>;
|
|
1404
1501
|
/** A write this screen made moved the record on (a version only goes up). */
|
|
1405
|
-
wrote: (id: Uuid
|
|
1502
|
+
wrote: (id: Uuid, version: number) => void;
|
|
1406
1503
|
/**
|
|
1407
1504
|
* Read these records' versions again now: the person pressed Reload, or the store refused a write
|
|
1408
1505
|
* because somebody else won (`PT409`) — the rows are re-read too, so the next write is against what
|
|
1409
1506
|
* the person then sees. A change that moved only the version (who sees the row) never re-reads by
|
|
1410
1507
|
* content, so without this the row stayed refused until the screen was opened again (verifier V10).
|
|
1411
1508
|
*/
|
|
1412
|
-
refresh: (ids: readonly Uuid
|
|
1509
|
+
refresh: (ids: readonly Uuid[]) => void;
|
|
1413
1510
|
}
|
|
1414
1511
|
|
|
1415
1512
|
/** Which cell is open. A grid opens exactly one at a time, like every other grid. */
|
|
1416
1513
|
interface CellAddress {
|
|
1417
|
-
rowId: Uuid
|
|
1514
|
+
rowId: Uuid;
|
|
1418
1515
|
key: string;
|
|
1419
1516
|
}
|
|
1420
1517
|
/** What one cell is doing right now, so nothing about it is guessed by a caller. */
|
|
@@ -1425,6 +1522,14 @@ interface CellRefusal {
|
|
|
1425
1522
|
conflict: WriteConflict | null;
|
|
1426
1523
|
/** The value that was being written, so Retry can write it again. */
|
|
1427
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;
|
|
1428
1533
|
}
|
|
1429
1534
|
declare function fieldIsEditable(field: Field): boolean;
|
|
1430
1535
|
interface GridEditing {
|
|
@@ -1435,8 +1540,8 @@ interface GridEditing {
|
|
|
1435
1540
|
draft: unknown;
|
|
1436
1541
|
/** The open cell's editor reports every keystroke to the session. */
|
|
1437
1542
|
type: (value: unknown) => void;
|
|
1438
|
-
stateOf: (rowId: Uuid
|
|
1439
|
-
refusalOf: (rowId: Uuid
|
|
1543
|
+
stateOf: (rowId: Uuid, key: string) => CellState;
|
|
1544
|
+
refusalOf: (rowId: Uuid, key: string) => CellRefusal | null;
|
|
1440
1545
|
/**
|
|
1441
1546
|
* Open a cell's editor. `seed` is what the person TYPED to open it (type-to-edit: a letter, an
|
|
1442
1547
|
* IME composition, an Option/AltGr character): a column a person types into opens holding
|
|
@@ -1471,34 +1576,36 @@ interface GridEditing {
|
|
|
1471
1576
|
* versioned, optimistic write path every other cell uses — the refusal, the conflict and
|
|
1472
1577
|
* the "Try again" beside it are identical.
|
|
1473
1578
|
*/
|
|
1474
|
-
setCell: (rowId: Uuid
|
|
1579
|
+
setCell: (rowId: Uuid, key: string, value: unknown) => void;
|
|
1475
1580
|
/**
|
|
1476
1581
|
* A VERSION CONFLICT ONLY: write the attempted value again, on top of the
|
|
1477
1582
|
* version the store said won. Never offered for a refusal of the VALUE — the
|
|
1478
1583
|
* same value would be refused the same way (VERIFIER-15 H2).
|
|
1479
1584
|
*/
|
|
1480
|
-
retry: (rowId: Uuid
|
|
1585
|
+
retry: (rowId: Uuid, key: string) => void;
|
|
1481
1586
|
/** A VERSION CONFLICT ONLY: drop the edit and show what the other person wrote. */
|
|
1482
|
-
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;
|
|
1483
1590
|
/**
|
|
1484
1591
|
* KEEP EDITING — the refused cell opens again HOLDING WHAT WAS TYPED, so the
|
|
1485
1592
|
* person corrects `-3` rather than typing it from nothing (lane
|
|
1486
1593
|
* RECORDS-UI-FIX, VERIFIER-15 H2).
|
|
1487
1594
|
*/
|
|
1488
|
-
keepEditing: (rowId: Uuid
|
|
1595
|
+
keepEditing: (rowId: Uuid, key: string) => void;
|
|
1489
1596
|
/** DISCARD — throw the refused value away; the cell shows what is stored. */
|
|
1490
|
-
discard: (rowId: Uuid
|
|
1597
|
+
discard: (rowId: Uuid, key: string) => void;
|
|
1491
1598
|
/**
|
|
1492
1599
|
* FORGET WHAT THIS SESSION DREW FOR THESE CELLS — after a change made OUTSIDE the editor (an
|
|
1493
1600
|
* undo, a bulk change) the store holds a new value and a new version, so the optimistic value
|
|
1494
1601
|
* and the version this session held for the row are both stale.
|
|
1495
1602
|
*/
|
|
1496
1603
|
forget: (cells: ReadonlyArray<{
|
|
1497
|
-
rowId: Uuid
|
|
1604
|
+
rowId: Uuid;
|
|
1498
1605
|
key: string;
|
|
1499
1606
|
}>) => void;
|
|
1500
1607
|
/** Soft delete, through the store's own door. Answers the store's refusal, or null. */
|
|
1501
|
-
remove: (rowId: Uuid
|
|
1608
|
+
remove: (rowId: Uuid) => Promise<RecordsError | null>;
|
|
1502
1609
|
/** Write an empty record and open its first editable cell. */
|
|
1503
1610
|
addRecord: () => Promise<RecordsError | null>;
|
|
1504
1611
|
/** The last refusal from a delete or an add, for the grid to print. */
|
|
@@ -1511,10 +1618,10 @@ interface GridEditing {
|
|
|
1511
1618
|
* grid hands it to the data table as `rowVersion`, so a keystroke, a save or a refusal redraws
|
|
1512
1619
|
* the ONE row it belongs to and no other.
|
|
1513
1620
|
*/
|
|
1514
|
-
rowSignature: (rowId: Uuid
|
|
1621
|
+
rowSignature: (rowId: Uuid) => readonly unknown[];
|
|
1515
1622
|
}
|
|
1516
1623
|
interface Options {
|
|
1517
|
-
tableId: Uuid
|
|
1624
|
+
tableId: Uuid;
|
|
1518
1625
|
fields: Field[];
|
|
1519
1626
|
rows: ReadRow[];
|
|
1520
1627
|
/** Re-read the page once the store has accepted something. */
|
|
@@ -1538,7 +1645,7 @@ interface Options {
|
|
|
1538
1645
|
* write to it. Unbound, every row follows the table, which is what the
|
|
1539
1646
|
* ordinary case is.
|
|
1540
1647
|
*/
|
|
1541
|
-
mayWriteRow?: ((rowId: Uuid
|
|
1648
|
+
mayWriteRow?: ((rowId: Uuid) => boolean) | undefined;
|
|
1542
1649
|
/**
|
|
1543
1650
|
* A CELL THE STORE ACCEPTED, with what it held before and what it holds now (merge tranche 6d):
|
|
1544
1651
|
* the merged grid's undo pushes one step per accepted cell. Unbound, nothing is told.
|
|
@@ -1550,7 +1657,7 @@ interface Options {
|
|
|
1550
1657
|
versions?: RecordVersions | undefined;
|
|
1551
1658
|
/** One cell the store took: its value before and after, and the record version that write made. */
|
|
1552
1659
|
onWritten?: ((write: {
|
|
1553
|
-
rowId: Uuid
|
|
1660
|
+
rowId: Uuid;
|
|
1554
1661
|
key: string;
|
|
1555
1662
|
before: unknown;
|
|
1556
1663
|
after: unknown;
|
|
@@ -1610,7 +1717,7 @@ declare function GridCell({ field, row, editing, canWrite, whyNot, format, onAsk
|
|
|
1610
1717
|
* looking at. Bound by the host; absent, no control is drawn at all, because
|
|
1611
1718
|
* a control that opens nothing is the thing this package exists to prevent.
|
|
1612
1719
|
*/
|
|
1613
|
-
onAskWhoChanged?: ((fieldKey: string, recordId: Uuid
|
|
1720
|
+
onAskWhoChanged?: ((fieldKey: string, recordId: Uuid) => void) | undefined;
|
|
1614
1721
|
}): react.JSX.Element;
|
|
1615
1722
|
|
|
1616
1723
|
/**
|
|
@@ -1836,7 +1943,7 @@ type ViewOrder = "manual" | "sorted" | null;
|
|
|
1836
1943
|
interface SavedViewSpec {
|
|
1837
1944
|
name: string;
|
|
1838
1945
|
/** The Table this view looks at. */
|
|
1839
|
-
subject: Uuid
|
|
1946
|
+
subject: Uuid;
|
|
1840
1947
|
layout: ViewLayout;
|
|
1841
1948
|
/** Kanban: the Field whose value becomes a column. */
|
|
1842
1949
|
groupField?: string | null;
|
|
@@ -1874,7 +1981,7 @@ interface SavedViewSpec {
|
|
|
1874
1981
|
* The membership Rule. The STORE decides who is in this view; this is a
|
|
1875
1982
|
* reference to its Rule record, never a predicate this package evaluates.
|
|
1876
1983
|
*/
|
|
1877
|
-
ruleId?: Uuid
|
|
1984
|
+
ruleId?: Uuid | null;
|
|
1878
1985
|
/**
|
|
1879
1986
|
* THE FLAT FILTER a digest or a notify rule wrote the view with — the one shape
|
|
1880
1987
|
* `custom.record_filter_sql` compiles, by Field KEY. A view saved in the bar has
|
|
@@ -1911,7 +2018,7 @@ interface SavedViewSpec {
|
|
|
1911
2018
|
* pressed in both keeps the latest — how Airtable and Notion keep a view change.
|
|
1912
2019
|
*/
|
|
1913
2020
|
interface SavedView extends SavedViewSpec {
|
|
1914
|
-
id: Uuid
|
|
2021
|
+
id: Uuid;
|
|
1915
2022
|
/** Where the view came from when it was moved in (the mover, the S0 repair), else null. */
|
|
1916
2023
|
movedFrom: Record<string, unknown> | null;
|
|
1917
2024
|
/**
|
|
@@ -2040,7 +2147,7 @@ declare function viewFromRow(row: SavedViewRow): SavedView;
|
|
|
2040
2147
|
* SAVE ONE NEW VIEW of a Table — the bar's "New view" and an agent's seed spec.
|
|
2041
2148
|
* One `view_declare` with no `view_id`; the answer is the new view's id.
|
|
2042
2149
|
*/
|
|
2043
|
-
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>>;
|
|
2044
2151
|
/**
|
|
2045
2152
|
* WRITE A CHANGE ONTO A SAVED VIEW, AND KEEP IT.
|
|
2046
2153
|
*
|
|
@@ -2056,7 +2163,7 @@ declare function declareView(client: Pick<RecordsClient, "viewDeclare">, spec: S
|
|
|
2056
2163
|
* was removed, or belongs to a table this person cannot open — is handed back for
|
|
2057
2164
|
* the page to say through the one notice.
|
|
2058
2165
|
*/
|
|
2059
|
-
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>>;
|
|
2060
2167
|
/**
|
|
2061
2168
|
* A PARTIAL change to a saved view, as the definition keys the door merges. Only
|
|
2062
2169
|
* the keys the caller actually changed are sent; a Field cleared (a board with no
|
|
@@ -2127,13 +2234,13 @@ declare function handOrderSortState(args: {
|
|
|
2127
2234
|
* key (`names.ts`) — and the cell is the value, rendered by its parity type and
|
|
2128
2235
|
* editable in place when an editing session is passed.
|
|
2129
2236
|
*/
|
|
2130
|
-
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?: {
|
|
2131
2238
|
format?: FieldFormatConfig;
|
|
2132
2239
|
frozen?: boolean;
|
|
2133
2240
|
rowLabel?: boolean;
|
|
2134
2241
|
},
|
|
2135
2242
|
/** "Who changed this?" from the cell's own menu. Absent, no control is drawn. */
|
|
2136
|
-
onAskWhoChanged?: ((fieldKey: string, recordId: Uuid) => void) | undefined,
|
|
2243
|
+
onAskWhoChanged?: ((fieldKey: string, recordId: Uuid$1) => void) | undefined,
|
|
2137
2244
|
/**
|
|
2138
2245
|
* PRODUCTS row 10 — the provenance of a cell a MODEL owns. `cellFor` answers the page's
|
|
2139
2246
|
* already-fetched badge data for one row; `onPin` is bound only where this person may
|
|
@@ -2141,14 +2248,10 @@ onAskWhoChanged?: ((fieldKey: string, recordId: Uuid) => void) | undefined,
|
|
|
2141
2248
|
* have. Absent entirely, no badge is drawn and the column looks exactly as it did.
|
|
2142
2249
|
*/
|
|
2143
2250
|
enrich?: {
|
|
2144
|
-
cellFor: (recordId: Uuid) => _ai_matrx_records.EnrichCell | undefined;
|
|
2145
|
-
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;
|
|
2146
2253
|
}): MatrxColumnDef<ReadRow$1>;
|
|
2147
2254
|
|
|
2148
|
-
/**
|
|
2149
|
-
* WHAT A TABLE WITH NO COLUMNS SAYS. Named here because the gate asserts on it:
|
|
2150
|
-
* the state it describes is what a first-time person met for two days.
|
|
2151
|
-
*/
|
|
2152
2255
|
declare const NO_COLUMNS_YET = "This table has no columns yet";
|
|
2153
2256
|
/**
|
|
2154
2257
|
* THE OPEN VIEW'S ORDER (lane GRID-MANUAL). A saved view is ordered by its sort OR by hand, never
|
|
@@ -2159,7 +2262,7 @@ declare const NO_COLUMNS_YET = "This table has no columns yet";
|
|
|
2159
2262
|
*/
|
|
2160
2263
|
interface GridViewOrder {
|
|
2161
2264
|
/** The saved view's id; `null` for a view a host holds inline (it still carries its own `sorts`). */
|
|
2162
|
-
viewId: Uuid | null;
|
|
2265
|
+
viewId: Uuid$1 | null;
|
|
2163
2266
|
/** The view's own order word (`definition.order`). */
|
|
2164
2267
|
order: ViewOrder;
|
|
2165
2268
|
/** The view's own sort (`definition.sorts`) — where a sorted view OPENS, over the table's. */
|
|
@@ -2176,7 +2279,7 @@ interface GridViewOrder {
|
|
|
2176
2279
|
onUseSort?: ((sort: ColumnSort) => void) | undefined;
|
|
2177
2280
|
}
|
|
2178
2281
|
interface GridProps {
|
|
2179
|
-
tableId: Uuid;
|
|
2282
|
+
tableId: Uuid$1;
|
|
2180
2283
|
/** Rows per page. The table's own pagination handles the rest. */
|
|
2181
2284
|
pageSize?: number | undefined;
|
|
2182
2285
|
/**
|
|
@@ -2200,13 +2303,13 @@ interface GridProps {
|
|
|
2200
2303
|
*/
|
|
2201
2304
|
onClearFilter?: (() => void) | undefined;
|
|
2202
2305
|
/** Opened from a row's handle, Space or the row menu. A host that has a record page passes its own. */
|
|
2203
|
-
onOpenRecord?: ((recordId: Uuid) => void) | undefined;
|
|
2306
|
+
onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
|
|
2204
2307
|
/**
|
|
2205
2308
|
* THE RECORD THE HOST HAS OPEN BESIDE THE GRID, if any (merged grid). While one is open the panel
|
|
2206
2309
|
* FOLLOWS the cursor: arrowing to another row opens that row (Airtable's expanded record walks
|
|
2207
2310
|
* with the arrows), so the panel always shows the row the person is on.
|
|
2208
2311
|
*/
|
|
2209
|
-
openRecordId?: Uuid | null | undefined;
|
|
2312
|
+
openRecordId?: Uuid$1 | null | undefined;
|
|
2210
2313
|
/**
|
|
2211
2314
|
* CLOSE THE RECORD PANEL (grids review 3, lane H item 5): Escape on the grid, and Space on the row
|
|
2212
2315
|
* that is already open, put it away — Airtable's expanded record toggles the same way. Unbound,
|
|
@@ -2223,7 +2326,7 @@ interface GridProps {
|
|
|
2223
2326
|
* (`custom.field_history`), and the host decides where the answer appears —
|
|
2224
2327
|
* a side panel, a window, a route. Unbound, the control is ABSENT, not dead.
|
|
2225
2328
|
*/
|
|
2226
|
-
onAskWhoChanged?: ((fieldKey: string, recordId: Uuid) => void) | undefined;
|
|
2329
|
+
onAskWhoChanged?: ((fieldKey: string, recordId: Uuid$1) => void) | undefined;
|
|
2227
2330
|
/**
|
|
2228
2331
|
* The host's whole-record form. Offered BY NAME when the store refuses an
|
|
2229
2332
|
* empty record — a Table with a required Field cannot be added to one cell at
|
|
@@ -2316,7 +2419,7 @@ interface RecordsTableCardProps {
|
|
|
2316
2419
|
*/
|
|
2317
2420
|
source: {
|
|
2318
2421
|
kind: "table";
|
|
2319
|
-
id: Uuid
|
|
2422
|
+
id: Uuid;
|
|
2320
2423
|
} | {
|
|
2321
2424
|
kind: "entity";
|
|
2322
2425
|
token: string;
|
|
@@ -2333,7 +2436,7 @@ interface RecordsTableCardProps {
|
|
|
2333
2436
|
initialRows?: number;
|
|
2334
2437
|
headingLevel?: 2 | 3;
|
|
2335
2438
|
/** Opened from a row. The host's record page, when it has one. */
|
|
2336
|
-
onOpenRecord?: (recordId: Uuid
|
|
2439
|
+
onOpenRecord?: (recordId: Uuid) => void;
|
|
2337
2440
|
/** Cells editable in place (the Grid's own rule still applies per field and per right). */
|
|
2338
2441
|
editable?: boolean;
|
|
2339
2442
|
className?: string;
|
|
@@ -2391,7 +2494,7 @@ declare function useRecordLabels(fields: readonly Field$1[] | undefined): LabelL
|
|
|
2391
2494
|
declare function useLabelWait(field: Field$1 | undefined): string | null;
|
|
2392
2495
|
|
|
2393
2496
|
interface ExportMenuProps {
|
|
2394
|
-
tableId: Uuid;
|
|
2497
|
+
tableId: Uuid$1;
|
|
2395
2498
|
/** The rows on screen. Absent means "this table's first page", read the same way. */
|
|
2396
2499
|
rows?: ReadRow$1[] | undefined;
|
|
2397
2500
|
/** What the file is called. The table's name by default. */
|
|
@@ -2448,7 +2551,7 @@ interface ImportSource {
|
|
|
2448
2551
|
text: string;
|
|
2449
2552
|
}
|
|
2450
2553
|
interface ImportWizardProps {
|
|
2451
|
-
tableId: Uuid;
|
|
2554
|
+
tableId: Uuid$1;
|
|
2452
2555
|
/** Rows to import instead of a file. When present the file control is not offered. */
|
|
2453
2556
|
source?: ImportSource | undefined;
|
|
2454
2557
|
/**
|
|
@@ -2479,7 +2582,7 @@ declare function ImportWizard({ tableId, source, onDone, onWrote, className }: I
|
|
|
2479
2582
|
/** The run a table's notice is about: the newest finished one that refused rows. */
|
|
2480
2583
|
declare function runToNotice(runs: ReadonlyArray<ImportRun>): ImportRun | null;
|
|
2481
2584
|
interface ImportNoticeProps {
|
|
2482
|
-
tableId: Uuid;
|
|
2585
|
+
tableId: Uuid$1;
|
|
2483
2586
|
/** Opens the import rail, where the run and its rows are listed. */
|
|
2484
2587
|
onOpenImport?: (() => void) | undefined;
|
|
2485
2588
|
/** Bumped by the host when an import just finished, so the notice re-reads. */
|
|
@@ -2556,9 +2659,9 @@ interface SaveToTableProps {
|
|
|
2556
2659
|
/** When the text holds several shapes, the one to open on (the one the person right-clicked). */
|
|
2557
2660
|
shapeIndex?: number | undefined;
|
|
2558
2661
|
/** Open a table (after it was made, or rows were added). Absent: no "Open" button is drawn. */
|
|
2559
|
-
onOpenTable?: ((tableId: Uuid) => void) | undefined;
|
|
2662
|
+
onOpenTable?: ((tableId: Uuid$1) => void) | undefined;
|
|
2560
2663
|
/** The rows landed — `new` when this screen made the table. */
|
|
2561
|
-
onSaved?: ((tableId: Uuid, how: "new" | "existing") => void) | undefined;
|
|
2664
|
+
onSaved?: ((tableId: Uuid$1, how: "new" | "existing") => void) | undefined;
|
|
2562
2665
|
/** The person is finished (the report's Done). */
|
|
2563
2666
|
onClose?: (() => void) | undefined;
|
|
2564
2667
|
className?: string | undefined;
|
|
@@ -2573,7 +2676,7 @@ interface CustomFieldsSectionProps {
|
|
|
2573
2676
|
/** The standard table's registered token (REC-33), e.g. `party`, `crm_deal`. */
|
|
2574
2677
|
entityToken: string;
|
|
2575
2678
|
/** The id of the row this page is showing. */
|
|
2576
|
-
recordId: Uuid;
|
|
2679
|
+
recordId: Uuid$1;
|
|
2577
2680
|
/** The heading. One row, no subtitle restating it. */
|
|
2578
2681
|
title?: string | undefined;
|
|
2579
2682
|
className?: string | undefined;
|
|
@@ -2610,7 +2713,7 @@ interface CustomFieldAddRequest {
|
|
|
2610
2713
|
}
|
|
2611
2714
|
type CustomFieldAddResult = {
|
|
2612
2715
|
ok: true;
|
|
2613
|
-
field_id: Uuid;
|
|
2716
|
+
field_id: Uuid$1;
|
|
2614
2717
|
label: string;
|
|
2615
2718
|
type: string;
|
|
2616
2719
|
} | {
|
|
@@ -2620,7 +2723,7 @@ type CustomFieldAddResult = {
|
|
|
2620
2723
|
/** What the section holds right now, in words an agent can act on. */
|
|
2621
2724
|
interface CustomFieldsAgentState {
|
|
2622
2725
|
entityToken: string;
|
|
2623
|
-
recordId: Uuid;
|
|
2726
|
+
recordId: Uuid$1;
|
|
2624
2727
|
/** The entity's own label ("Deal") once the rights read answered. */
|
|
2625
2728
|
entityLabel: string | null;
|
|
2626
2729
|
/** `null` while the rights read is in flight. */
|
|
@@ -2657,7 +2760,7 @@ type CustomFieldSetResult = {
|
|
|
2657
2760
|
};
|
|
2658
2761
|
interface CustomFieldsAgentDoor {
|
|
2659
2762
|
entityToken: string;
|
|
2660
|
-
recordId: Uuid;
|
|
2763
|
+
recordId: Uuid$1;
|
|
2661
2764
|
state: () => CustomFieldsAgentState;
|
|
2662
2765
|
/**
|
|
2663
2766
|
* Every problem with the request, all at once, or `[]`. Nothing is written.
|
|
@@ -2861,15 +2964,22 @@ interface FieldEditorCommon {
|
|
|
2861
2964
|
* custom-table doors.
|
|
2862
2965
|
*/
|
|
2863
2966
|
type FieldEditorProps = FieldEditorCommon & ({
|
|
2864
|
-
tableId: Uuid
|
|
2967
|
+
tableId: Uuid;
|
|
2865
2968
|
entityToken?: undefined;
|
|
2866
2969
|
/** The Field being edited. Absent means a new one. */
|
|
2867
2970
|
field?: Field | undefined;
|
|
2971
|
+
/**
|
|
2972
|
+
* DUPLICATE PROPERTY (Notion N5): a NEW column that starts as a copy of this one — its kind,
|
|
2973
|
+
* choices and colours, unit, link, formula and rules — named "<name> (1)". Ignored when
|
|
2974
|
+
* `field` is given.
|
|
2975
|
+
*/
|
|
2976
|
+
copyOf?: Field | undefined;
|
|
2868
2977
|
} | {
|
|
2869
2978
|
/** The standard table's registry token (REC-33), e.g. `party`, `crm_deal`. */
|
|
2870
2979
|
entityToken: string;
|
|
2871
2980
|
tableId?: undefined;
|
|
2872
2981
|
field?: undefined;
|
|
2982
|
+
copyOf?: undefined;
|
|
2873
2983
|
});
|
|
2874
2984
|
declare function FieldEditor(props: FieldEditorProps): react.JSX.Element | null;
|
|
2875
2985
|
declare function whatIsMissing(state: {
|
|
@@ -2894,7 +3004,7 @@ declare const NO_RULES_YET = "Nothing has to be true to get here yet.";
|
|
|
2894
3004
|
declare const NEEDS_A_SENTENCE = "Write the sentence somebody reads when this stops them, the way you would say it out loud.";
|
|
2895
3005
|
declare const NOT_DRAWN_HERE = "This part of the rule is not something this builder can draw yet";
|
|
2896
3006
|
interface StageRulesSectionProps {
|
|
2897
|
-
tableId: Uuid;
|
|
3007
|
+
tableId: Uuid$1;
|
|
2898
3008
|
/** Which stage's rules to edit. Left out, the section opens on the first stage. */
|
|
2899
3009
|
stage?: string | undefined;
|
|
2900
3010
|
className?: string | undefined;
|
|
@@ -3018,7 +3128,7 @@ declare const TABLE_NAME_MAX = 120;
|
|
|
3018
3128
|
/** Why a typed table name cannot be kept, or null when it can. */
|
|
3019
3129
|
declare function tableNameProblem(typed: string): string | null;
|
|
3020
3130
|
declare function TableRenameDialog({ tableId, name, open, onOpenChange, onRenamed, }: {
|
|
3021
|
-
tableId: Uuid
|
|
3131
|
+
tableId: Uuid;
|
|
3022
3132
|
/** The table's name as it is kept now. */
|
|
3023
3133
|
name: string;
|
|
3024
3134
|
open: boolean;
|
|
@@ -3050,7 +3160,7 @@ interface FieldProposalRow {
|
|
|
3050
3160
|
proposed_by: string;
|
|
3051
3161
|
}
|
|
3052
3162
|
interface TableSettingsProps {
|
|
3053
|
-
tableId: Uuid;
|
|
3163
|
+
tableId: Uuid$1;
|
|
3054
3164
|
/**
|
|
3055
3165
|
* SCR-5. Pending field proposals. The door that lists them
|
|
3056
3166
|
* (`custom.field_propose`) does not exist yet — `@ai-matrx/records` answers
|
|
@@ -3074,20 +3184,24 @@ interface TableSettingsProps {
|
|
|
3074
3184
|
columns?: ColumnsLook | undefined;
|
|
3075
3185
|
className?: string | undefined;
|
|
3076
3186
|
}
|
|
3077
|
-
|
|
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;
|
|
3078
3192
|
|
|
3079
3193
|
/** Whether a Table document marks the table as Foundation. Absent is no — the store's own rule. */
|
|
3080
3194
|
declare function isFoundationTable(table: Pick<Table, "foundation"> | {
|
|
3081
3195
|
foundation?: unknown;
|
|
3082
3196
|
} | null | undefined): boolean;
|
|
3083
3197
|
declare function TableFoundationSwitch({ tableId, table }: {
|
|
3084
|
-
tableId: Uuid
|
|
3198
|
+
tableId: Uuid;
|
|
3085
3199
|
table: Table;
|
|
3086
3200
|
}): react.JSX.Element;
|
|
3087
3201
|
|
|
3088
3202
|
interface PeekProps {
|
|
3089
|
-
tableId: Uuid;
|
|
3090
|
-
recordId: Uuid;
|
|
3203
|
+
tableId: Uuid$1;
|
|
3204
|
+
recordId: Uuid$1;
|
|
3091
3205
|
onClose?: (() => void) | undefined;
|
|
3092
3206
|
className?: string | undefined;
|
|
3093
3207
|
/**
|
|
@@ -3118,11 +3232,11 @@ declare function standardTokenOf(token: string): string;
|
|
|
3118
3232
|
interface StandardRecordFormProps {
|
|
3119
3233
|
/** The standard table, by registry token: `entity:party` (or the bare `party`). */
|
|
3120
3234
|
token: string;
|
|
3121
|
-
recordId: Uuid;
|
|
3235
|
+
recordId: Uuid$1;
|
|
3122
3236
|
/** The row's own columns, in the order shown. */
|
|
3123
3237
|
columns: readonly StandardColumn[];
|
|
3124
3238
|
/** Called after a value was saved, so the host re-reads what it shows elsewhere (a title). */
|
|
3125
|
-
onSaved?: ((recordId: Uuid) => void) | undefined;
|
|
3239
|
+
onSaved?: ((recordId: Uuid$1) => void) | undefined;
|
|
3126
3240
|
className?: string | undefined;
|
|
3127
3241
|
/** The custom-fields half: its heading and the host's doors (agent door, own-table offer, noun). */
|
|
3128
3242
|
custom?: Omit<CustomFieldsSectionProps, "entityToken" | "recordId" | "className"> | undefined;
|
|
@@ -3133,7 +3247,7 @@ declare function StandardRecordForm({ token, recordId, columns, onSaved, classNa
|
|
|
3133
3247
|
|
|
3134
3248
|
interface RecordFormProps {
|
|
3135
3249
|
/** A CUSTOM table's id. Give `token` instead for a row of a standard table. */
|
|
3136
|
-
tableId?: Uuid | undefined;
|
|
3250
|
+
tableId?: Uuid$1 | undefined;
|
|
3137
3251
|
/**
|
|
3138
3252
|
* STANDARD-TABLE MODE (FTS-2b wave 6): a registry token, `entity:party` (or the bare `party`).
|
|
3139
3253
|
* The form reads and writes that row through the store's standard-row doors, as the person —
|
|
@@ -3148,10 +3262,10 @@ interface RecordFormProps {
|
|
|
3148
3262
|
/** Standard mode: the host's own controls on this row, between the columns and the custom fields. */
|
|
3149
3263
|
children?: ReactNode;
|
|
3150
3264
|
/** Absent means "create". Present means "edit that record". */
|
|
3151
|
-
recordId?: Uuid | undefined;
|
|
3265
|
+
recordId?: Uuid$1 | undefined;
|
|
3152
3266
|
/** FLD-10: which Fields apply is the store's decision, and it takes the record type. */
|
|
3153
3267
|
recordType?: string | undefined;
|
|
3154
|
-
onSaved?: ((recordId: Uuid) => void) | undefined;
|
|
3268
|
+
onSaved?: ((recordId: Uuid$1) => void) | undefined;
|
|
3155
3269
|
onCancel?: (() => void) | undefined;
|
|
3156
3270
|
className?: string | undefined;
|
|
3157
3271
|
/**
|
|
@@ -3642,7 +3756,7 @@ declare function pickableTypeOf(field: Field): PickableFieldType | undefined;
|
|
|
3642
3756
|
declare function fieldTypeLabel(field: Field): string;
|
|
3643
3757
|
|
|
3644
3758
|
/** The one token form, written the way the store's own pattern reads it. */
|
|
3645
|
-
declare function fieldToken(fieldId: Uuid
|
|
3759
|
+
declare function fieldToken(fieldId: Uuid): string;
|
|
3646
3760
|
/** THE DECLARATIVE SPEC an agent writes. One template, whole, in one object. */
|
|
3647
3761
|
interface DocTemplateSpec {
|
|
3648
3762
|
name: string;
|
|
@@ -3781,7 +3895,7 @@ interface SystemFieldSpec {
|
|
|
3781
3895
|
* every organization's first load, which is the class this file just cost us.
|
|
3782
3896
|
*/
|
|
3783
3897
|
options?: string[];
|
|
3784
|
-
relationTarget?: Uuid
|
|
3898
|
+
relationTarget?: Uuid;
|
|
3785
3899
|
expr?: Record<string, unknown>;
|
|
3786
3900
|
}
|
|
3787
3901
|
interface SystemTableSpec {
|
|
@@ -3796,13 +3910,13 @@ interface SystemTableSpec {
|
|
|
3796
3910
|
/** Find this organization's copy of a package-owned Table, declaring it the first time. */
|
|
3797
3911
|
declare function ensureSystemTable(client: RecordsClient, spec: SystemTableSpec): Promise<{
|
|
3798
3912
|
ok: true;
|
|
3799
|
-
data: Uuid
|
|
3913
|
+
data: Uuid;
|
|
3800
3914
|
} | {
|
|
3801
3915
|
ok: false;
|
|
3802
3916
|
error: RecordsError;
|
|
3803
3917
|
}>;
|
|
3804
3918
|
interface UseSystemTableState {
|
|
3805
|
-
tableId: Uuid
|
|
3919
|
+
tableId: Uuid | null;
|
|
3806
3920
|
loading: boolean;
|
|
3807
3921
|
error: RecordsError | null;
|
|
3808
3922
|
}
|
|
@@ -3839,7 +3953,7 @@ declare function archiveConfirmSentence(what: string): string;
|
|
|
3839
3953
|
interface AnnounceTableArchived {
|
|
3840
3954
|
notify: RecordsUiHost["notify"];
|
|
3841
3955
|
client: Pick<RecordsClient, "tableRestoreWhole">;
|
|
3842
|
-
tableId: Uuid
|
|
3956
|
+
tableId: Uuid;
|
|
3843
3957
|
/** The table's name as the store gave it. */
|
|
3844
3958
|
name: string;
|
|
3845
3959
|
/** Called once the table is back, so the surface can show it again. */
|
|
@@ -3879,9 +3993,9 @@ declare function saveToViewPlan(view: SavedView, look: ViewLook): {
|
|
|
3879
3993
|
left: ViewLook | null;
|
|
3880
3994
|
};
|
|
3881
3995
|
/** The caller's own looks at every view of a table, by view id. */
|
|
3882
|
-
declare function readLooks(client: Pick<RecordsClient, "viewLookRead">, tableId: Uuid
|
|
3996
|
+
declare function readLooks(client: Pick<RecordsClient, "viewLookRead">, tableId: Uuid): Promise<RecordsResult<Record<string, ViewLook>>>;
|
|
3883
3997
|
/** Keep the whole look (null: "Reset to view"). The shared view is never written. */
|
|
3884
|
-
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>>;
|
|
3885
3999
|
/** The words of the look bar. One sentence, then the doors. */
|
|
3886
4000
|
declare const LOOK_WORDS: {
|
|
3887
4001
|
/** The reason, for a tooltip or a screen reader — never a line on the page (interface-text). */
|
|
@@ -3916,9 +4030,9 @@ interface ViewSwitcherProps {
|
|
|
3916
4030
|
* and the screen says the choice is not being kept.
|
|
3917
4031
|
*/
|
|
3918
4032
|
onViewChange?: ((patch: Partial<SavedViewSpec>) => void) | undefined;
|
|
3919
|
-
onOpenRecord?: ((recordId: Uuid) => void) | undefined;
|
|
4033
|
+
onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
|
|
3920
4034
|
/** The record the host has open beside a grid, which the grid's panel then follows (`Grid.openRecordId`). */
|
|
3921
|
-
openRecordId?: Uuid | null | undefined;
|
|
4035
|
+
openRecordId?: Uuid$1 | null | undefined;
|
|
3922
4036
|
/** Put the record panel away (Escape, or Space on the open row): `Grid.onCloseRecord`. */
|
|
3923
4037
|
onCloseRecord?: (() => void) | undefined;
|
|
3924
4038
|
/**
|
|
@@ -3930,7 +4044,7 @@ interface ViewSwitcherProps {
|
|
|
3930
4044
|
/** The host's whole-record form, offered by the grid when an empty record is refused. */
|
|
3931
4045
|
onNewRecordForm?: (() => void) | undefined;
|
|
3932
4046
|
/** "Who changed this?" from a grid cell — the host opens that column's timeline. */
|
|
3933
|
-
onAskWhoChanged?: ((fieldKey: string, recordId: Uuid) => void) | undefined;
|
|
4047
|
+
onAskWhoChanged?: ((fieldKey: string, recordId: Uuid$1) => void) | undefined;
|
|
3934
4048
|
pageSize?: number | undefined;
|
|
3935
4049
|
/**
|
|
3936
4050
|
* THE TABLE'S OWN TITLE COLUMN (`title_field`, REC-2), from the table the host already holds.
|
|
@@ -3975,7 +4089,7 @@ interface ViewSwitcherProps {
|
|
|
3975
4089
|
* it (`custom.view_record_order_set`, Reorder → Save) through it. Left out — a literal spec —
|
|
3976
4090
|
* the view has no hand order and the grid offers no Reorder.
|
|
3977
4091
|
*/
|
|
3978
|
-
viewId?: Uuid | null | undefined;
|
|
4092
|
+
viewId?: Uuid$1 | null | undefined;
|
|
3979
4093
|
/**
|
|
3980
4094
|
* The rows were placed by hand: the store made this view manual and removed its sort. The host
|
|
3981
4095
|
* updates the view it holds (nothing is written — the store already did).
|
|
@@ -4007,7 +4121,7 @@ interface ViewSwitcherProps {
|
|
|
4007
4121
|
className?: string | undefined;
|
|
4008
4122
|
}
|
|
4009
4123
|
/** The records this view holds: its Rule's members when it names one, the table otherwise. */
|
|
4010
|
-
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): {
|
|
4011
4125
|
rows: ReadRow$1[];
|
|
4012
4126
|
manual: boolean;
|
|
4013
4127
|
/** How many records the view holds, as the store counted them (null when it did not count). */
|
|
@@ -4038,7 +4152,7 @@ declare function ViewSwitcher({ view, onLayoutChange, onViewChange, onOpenRecord
|
|
|
4038
4152
|
type CalendarMode = "month" | "week" | "day" | "list";
|
|
4039
4153
|
interface CalendarViewProps {
|
|
4040
4154
|
/** The table the records live in — the undo history's table, and where a new record is made. */
|
|
4041
|
-
tableId: Uuid;
|
|
4155
|
+
tableId: Uuid$1;
|
|
4042
4156
|
rows: readonly ReadRow$1[];
|
|
4043
4157
|
/** The column a record's day (and, when it carries one, its time) is read from and written to. */
|
|
4044
4158
|
dateField: Field$1;
|
|
@@ -4059,7 +4173,7 @@ interface CalendarViewProps {
|
|
|
4059
4173
|
endKept?: boolean | undefined;
|
|
4060
4174
|
/** The column that names each card (`cardTitleField`). */
|
|
4061
4175
|
titleField: Field$1 | undefined;
|
|
4062
|
-
onOpenRecord?: ((recordId: Uuid) => void) | undefined;
|
|
4176
|
+
onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
|
|
4063
4177
|
/** A move landed (or was undone, or refused): the host re-reads the rows it owns. */
|
|
4064
4178
|
onMoved?: (() => void) | undefined;
|
|
4065
4179
|
/** The person picked a Colour by column: the host keeps it on the view (`presentation.style.colorBy`). */
|
|
@@ -4110,7 +4224,7 @@ interface TimelineViewProps {
|
|
|
4110
4224
|
/** The fields each bar shows after its title (the view's Card fields, v7 item 4). */
|
|
4111
4225
|
cardFields?: readonly Field$1[] | undefined;
|
|
4112
4226
|
/** The table the records live in — the undo history's table. */
|
|
4113
|
-
tableId: Uuid;
|
|
4227
|
+
tableId: Uuid$1;
|
|
4114
4228
|
rows: readonly ReadRow$1[];
|
|
4115
4229
|
/** The table's columns: the pickers, the lanes and the colours read them. */
|
|
4116
4230
|
fields: readonly Field$1[];
|
|
@@ -4130,7 +4244,7 @@ interface TimelineViewProps {
|
|
|
4130
4244
|
onSettingsChange?: ((patch: Partial<TimelineSettings>) => void) | undefined;
|
|
4131
4245
|
/** False when the host cannot keep the layout or the End on the view: the toolbar says so. */
|
|
4132
4246
|
layoutKept?: boolean | undefined;
|
|
4133
|
-
onOpenRecord?: ((recordId: Uuid) => void) | undefined;
|
|
4247
|
+
onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
|
|
4134
4248
|
/** A move landed (or was undone): the host re-reads the rows it owns. */
|
|
4135
4249
|
onMoved?: (() => void) | undefined;
|
|
4136
4250
|
/** The view's membership sentence (`useViewRecords().membership`). */
|
|
@@ -4153,7 +4267,7 @@ declare function useRowColorBy(all: readonly Field$1[], colorKey: string | null,
|
|
|
4153
4267
|
|
|
4154
4268
|
/** One cell a change touched: its value before and after, by Field key. */
|
|
4155
4269
|
interface TouchedCell {
|
|
4156
|
-
rowId: Uuid
|
|
4270
|
+
rowId: Uuid;
|
|
4157
4271
|
key: string;
|
|
4158
4272
|
before: unknown;
|
|
4159
4273
|
after: unknown;
|
|
@@ -4171,9 +4285,9 @@ interface GridUndoStep {
|
|
|
4171
4285
|
label: string;
|
|
4172
4286
|
cells: TouchedCell[];
|
|
4173
4287
|
/** Records this change created — undo archives them. */
|
|
4174
|
-
created?: Uuid
|
|
4288
|
+
created?: Uuid[] | undefined;
|
|
4175
4289
|
/** Records this change archived — undo restores them. */
|
|
4176
|
-
archived?: Uuid
|
|
4290
|
+
archived?: Uuid[] | undefined;
|
|
4177
4291
|
/** The after-values are the store's own (a row action worked them out), so it cannot be redone. */
|
|
4178
4292
|
noRedo?: boolean | undefined;
|
|
4179
4293
|
/**
|
|
@@ -4182,7 +4296,7 @@ interface GridUndoStep {
|
|
|
4182
4296
|
* delete was no step at all, so Cmd-Z after it silently undid the OLDER cell edit beneath it.
|
|
4183
4297
|
*/
|
|
4184
4298
|
retiredField?: {
|
|
4185
|
-
fieldId: Uuid
|
|
4299
|
+
fieldId: Uuid;
|
|
4186
4300
|
} | undefined;
|
|
4187
4301
|
}
|
|
4188
4302
|
interface GridUndo {
|
|
@@ -4208,7 +4322,7 @@ interface GridUndo {
|
|
|
4208
4322
|
* Say something beside the last step without a step. `sticky` (a paste the store refused, a
|
|
4209
4323
|
* read-back that came up short) stays until dismissed; otherwise it leaves by itself.
|
|
4210
4324
|
*/
|
|
4211
|
-
say: (says: string, sticky?: boolean) => void;
|
|
4325
|
+
say: (says: string, sticky?: boolean, offerUndo?: boolean) => void;
|
|
4212
4326
|
}
|
|
4213
4327
|
|
|
4214
4328
|
/** What one write answered: done (with the version it made), or the store's refusal. */
|
|
@@ -4224,7 +4338,7 @@ type MoveWritten = {
|
|
|
4224
4338
|
* means the caller does not know it — the write is then NOT sent, because a write with no version
|
|
4225
4339
|
* is a write that can overwrite a colleague (said as a refusal, never silently).
|
|
4226
4340
|
*/
|
|
4227
|
-
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>;
|
|
4228
4342
|
interface RecordMoves {
|
|
4229
4343
|
/**
|
|
4230
4344
|
* Move one record: `patch` is the new values by Field key, `before` the values it held (read from
|
|
@@ -4232,20 +4346,20 @@ interface RecordMoves {
|
|
|
4232
4346
|
* Answers whether the store took it.
|
|
4233
4347
|
*/
|
|
4234
4348
|
move: (args: {
|
|
4235
|
-
recordId: Uuid
|
|
4349
|
+
recordId: Uuid;
|
|
4236
4350
|
patch: Record<string, unknown>;
|
|
4237
4351
|
before: Record<string, unknown>;
|
|
4238
4352
|
label: string;
|
|
4239
4353
|
}) => Promise<boolean>;
|
|
4240
4354
|
/** Make one record from a gesture (a click on a day, a drag across hours): ONE write, one undo step. */
|
|
4241
4355
|
create: (args: {
|
|
4242
|
-
tableId: Uuid
|
|
4356
|
+
tableId: Uuid;
|
|
4243
4357
|
data: Record<string, unknown>;
|
|
4244
4358
|
label: string;
|
|
4245
|
-
}) => Promise<Uuid
|
|
4359
|
+
}) => Promise<Uuid | null>;
|
|
4246
4360
|
/** The refusal the store gave the last move, and the record it is about — a badge on that card. */
|
|
4247
4361
|
refused: {
|
|
4248
|
-
recordId: Uuid
|
|
4362
|
+
recordId: Uuid;
|
|
4249
4363
|
error: RecordsError;
|
|
4250
4364
|
changedElsewhere: boolean;
|
|
4251
4365
|
unread?: boolean | undefined;
|
|
@@ -4260,7 +4374,7 @@ interface RecordMoves {
|
|
|
4260
4374
|
notice: ReactElement;
|
|
4261
4375
|
}
|
|
4262
4376
|
declare function useRecordMoves({ tableId, rows, onMoved, }: {
|
|
4263
|
-
tableId: Uuid
|
|
4377
|
+
tableId: Uuid;
|
|
4264
4378
|
/** The rows the layout drew — their versions are what a move is written against. */
|
|
4265
4379
|
rows: readonly ReadRow[];
|
|
4266
4380
|
onMoved?: (() => void) | undefined;
|
|
@@ -4273,7 +4387,7 @@ declare function mayNotRestoreLine(why: string): string;
|
|
|
4273
4387
|
/** What one row in the archive says, as one string — pulled out so the guard can read it. */
|
|
4274
4388
|
declare function archivedRowLine(row: ArchivedRow, titleKey?: string | null): string;
|
|
4275
4389
|
interface ArchivedViewProps {
|
|
4276
|
-
tableId: Uuid
|
|
4390
|
+
tableId: Uuid;
|
|
4277
4391
|
/** Rows per page. The store refuses above its own ceiling by name rather than quietly serving fewer. */
|
|
4278
4392
|
pageSize?: number | undefined;
|
|
4279
4393
|
/** Which lane the address or the host asked for. Absent, the organization's. */
|
|
@@ -4281,7 +4395,7 @@ interface ArchivedViewProps {
|
|
|
4281
4395
|
/** Called when the person switches lane, so the host can put it in the URL. */
|
|
4282
4396
|
onLaneChange?: ((lane: ArchiveLane) => void) | undefined;
|
|
4283
4397
|
/** Called after a record comes back, so the host re-reads the rows it owns. */
|
|
4284
|
-
onRestored?: ((recordId: Uuid
|
|
4398
|
+
onRestored?: ((recordId: Uuid) => void) | undefined;
|
|
4285
4399
|
className?: string | undefined;
|
|
4286
4400
|
}
|
|
4287
4401
|
declare function ArchivedView({ tableId, pageSize, lane: laneFromHost, onLaneChange, onRestored, className, }: ArchivedViewProps): react.JSX.Element;
|
|
@@ -4312,7 +4426,7 @@ interface ArchivedDisclosureProps {
|
|
|
4312
4426
|
declare function ArchivedDisclosure({ noun, count, defaultOpen, onOpenChange, children, className, }: ArchivedDisclosureProps): react.JSX.Element;
|
|
4313
4427
|
interface ArchivedPortalsProps {
|
|
4314
4428
|
/** Called after a portal comes back, so the rail re-reads the list it owns. */
|
|
4315
|
-
onRestored?: ((portalId: Uuid) => void) | undefined;
|
|
4429
|
+
onRestored?: ((portalId: Uuid$1) => void) | undefined;
|
|
4316
4430
|
/**
|
|
4317
4431
|
* Bumped by the surface above whenever IT changed something that lands here —
|
|
4318
4432
|
* archiving a portal from the live rail, most of all. Without it an archive
|
|
@@ -4337,9 +4451,9 @@ declare function ArchivedPortals({ onRestored, refreshToken, defaultOpen, classN
|
|
|
4337
4451
|
|
|
4338
4452
|
interface ViewBarProps {
|
|
4339
4453
|
/** The Table whose views these are. */
|
|
4340
|
-
tableId: Uuid;
|
|
4454
|
+
tableId: Uuid$1;
|
|
4341
4455
|
/** The view that is showing. Leave it out and the bar picks the default, then the first. */
|
|
4342
|
-
activeViewId?: Uuid | null | undefined;
|
|
4456
|
+
activeViewId?: Uuid$1 | null | undefined;
|
|
4343
4457
|
onActiveView?: ((view: SavedView) => void) | undefined;
|
|
4344
4458
|
/**
|
|
4345
4459
|
* COMPLETE DECLARATIVE SPECS an agent wrote. Any of these whose name this
|
|
@@ -4382,9 +4496,9 @@ interface ProposedChange {
|
|
|
4382
4496
|
* required field a caller cannot fill is a field that gets filled with
|
|
4383
4497
|
* something untrue.
|
|
4384
4498
|
*/
|
|
4385
|
-
table?: Uuid | undefined;
|
|
4499
|
+
table?: Uuid$1 | undefined;
|
|
4386
4500
|
/** The record it changes. Required for `update` and `remove`. */
|
|
4387
|
-
record?: Uuid | undefined;
|
|
4501
|
+
record?: Uuid$1 | undefined;
|
|
4388
4502
|
/** The document for `add`, or the patch for `update`. */
|
|
4389
4503
|
data?: Record<string, unknown> | undefined;
|
|
4390
4504
|
/**
|
|
@@ -4458,19 +4572,19 @@ interface ActionInboxProps {
|
|
|
4458
4572
|
* (lane S5-PRIME), so this narrows approvals, proposals and assignments alike;
|
|
4459
4573
|
* when the table has nothing, the inbox says how many wait elsewhere and offers them.
|
|
4460
4574
|
*/
|
|
4461
|
-
tableId?: Uuid | null | undefined;
|
|
4575
|
+
tableId?: Uuid$1 | null | undefined;
|
|
4462
4576
|
/** Show decided rows too, from the start. `h` (or the button) toggles it. */
|
|
4463
4577
|
includeSettled?: boolean | undefined;
|
|
4464
4578
|
/** How the rows start out grouped. Default: by kind. */
|
|
4465
4579
|
defaultGroupBy?: InboxGrouping | undefined;
|
|
4466
|
-
onOpenRecord?: ((recordId: Uuid, tableId: Uuid) => void) | undefined;
|
|
4580
|
+
onOpenRecord?: ((recordId: Uuid$1, tableId: Uuid$1) => void) | undefined;
|
|
4467
4581
|
className?: string | undefined;
|
|
4468
4582
|
}
|
|
4469
4583
|
declare function ActionInbox({ tableId, includeSettled, defaultGroupBy, onOpenRecord, className, }: ActionInboxProps): react.JSX.Element;
|
|
4470
4584
|
|
|
4471
4585
|
interface HistoryPanelProps {
|
|
4472
|
-
tableId: Uuid;
|
|
4473
|
-
recordId: Uuid;
|
|
4586
|
+
tableId: Uuid$1;
|
|
4587
|
+
recordId: Uuid$1;
|
|
4474
4588
|
/**
|
|
4475
4589
|
* "Who changed THIS column?" — the host opens that field's own timeline. Left
|
|
4476
4590
|
* out, the per-field control is absent rather than dead.
|
|
@@ -4482,9 +4596,9 @@ declare function HistoryPanel({ tableId, recordId, onAskAboutField, className }:
|
|
|
4482
4596
|
|
|
4483
4597
|
interface CommentThreadProps {
|
|
4484
4598
|
/** The Table the commented-on record belongs to — its Fields name an anchor. */
|
|
4485
|
-
tableId: Uuid;
|
|
4599
|
+
tableId: Uuid$1;
|
|
4486
4600
|
/** The record being discussed. */
|
|
4487
|
-
recordId: Uuid;
|
|
4601
|
+
recordId: Uuid$1;
|
|
4488
4602
|
/** Open on the thread about ONE column, and post there by default. */
|
|
4489
4603
|
fieldKey?: string | undefined;
|
|
4490
4604
|
className?: string | undefined;
|
|
@@ -4492,15 +4606,15 @@ interface CommentThreadProps {
|
|
|
4492
4606
|
declare function CommentThread({ tableId, recordId, fieldKey, className }: CommentThreadProps): react.JSX.Element;
|
|
4493
4607
|
|
|
4494
4608
|
interface FieldHistoryPanelProps {
|
|
4495
|
-
tableId: Uuid;
|
|
4609
|
+
tableId: Uuid$1;
|
|
4496
4610
|
/** The column being asked about, by its key. */
|
|
4497
4611
|
fieldKey: string;
|
|
4498
4612
|
/** Scoped to ONE record when present; the whole Table when absent. */
|
|
4499
|
-
recordId?: Uuid | undefined;
|
|
4613
|
+
recordId?: Uuid$1 | undefined;
|
|
4500
4614
|
/** The host's way back — a cell menu opens this, so it closes too. */
|
|
4501
4615
|
onClose?: (() => void) | undefined;
|
|
4502
4616
|
/** Open a record from one of its rows. Absent, the row is not a link. */
|
|
4503
|
-
onOpenRecord?: ((recordId: Uuid) => void) | undefined;
|
|
4617
|
+
onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
|
|
4504
4618
|
className?: string | undefined;
|
|
4505
4619
|
}
|
|
4506
4620
|
declare function FieldHistoryPanel({ tableId, fieldKey, recordId, onClose, onOpenRecord, className, }: FieldHistoryPanelProps): react.JSX.Element;
|
|
@@ -4540,8 +4654,8 @@ interface FormTheme {
|
|
|
4540
4654
|
*/
|
|
4541
4655
|
interface FormLook {
|
|
4542
4656
|
accent?: PortalAccent | null;
|
|
4543
|
-
logoFileId?: Uuid
|
|
4544
|
-
coverFileId?: Uuid
|
|
4657
|
+
logoFileId?: Uuid | null;
|
|
4658
|
+
coverFileId?: Uuid | null;
|
|
4545
4659
|
}
|
|
4546
4660
|
/** The screen after sending: the form's words, and optionally where to go next. */
|
|
4547
4661
|
interface FormThankYou {
|
|
@@ -4554,7 +4668,7 @@ interface FormThankYou {
|
|
|
4554
4668
|
interface FormSpec {
|
|
4555
4669
|
name: string;
|
|
4556
4670
|
/** The Table a submission lands in. */
|
|
4557
|
-
subject: Uuid
|
|
4671
|
+
subject: Uuid;
|
|
4558
4672
|
intro?: string | null;
|
|
4559
4673
|
questions: FormQuestionSpec[];
|
|
4560
4674
|
flow?: FormFlow | null;
|
|
@@ -4590,7 +4704,7 @@ interface FormSpec {
|
|
|
4590
4704
|
* read here and handed straight back by `formDeclareArgs`.
|
|
4591
4705
|
*/
|
|
4592
4706
|
interface SavedForm extends FormSpec {
|
|
4593
|
-
id: Uuid
|
|
4707
|
+
id: Uuid;
|
|
4594
4708
|
/** draft · open · closed · full — the store's own word, never derived on a screen. */
|
|
4595
4709
|
state: FormSummary["state"];
|
|
4596
4710
|
/** The form's readable name in the store. `form_declare` keeps it across saves. */
|
|
@@ -4598,9 +4712,9 @@ interface SavedForm extends FormSpec {
|
|
|
4598
4712
|
/** Stops taking answers at this many. Null is no ceiling. */
|
|
4599
4713
|
submissionCap: number | null;
|
|
4600
4714
|
/** The accept Rule: what counts as a complete answer. Null holds every answer for a person. */
|
|
4601
|
-
quarantineRuleId: Uuid
|
|
4715
|
+
quarantineRuleId: Uuid | null;
|
|
4602
4716
|
/** The subscription Rule that tells somebody an answer arrived. */
|
|
4603
|
-
notifyRuleId: Uuid
|
|
4717
|
+
notifyRuleId: Uuid | null;
|
|
4604
4718
|
}
|
|
4605
4719
|
/**
|
|
4606
4720
|
* The spec as `custom.anon_form.presentation` holds it.
|
|
@@ -4616,14 +4730,14 @@ declare function formLookDocument(look: FormLook | null): Record<string, unknown
|
|
|
4616
4730
|
declare function formLookFromDocument(raw: unknown): FormLook | null;
|
|
4617
4731
|
/** The exact arguments `custom.form_declare` is called with, for a new form or a re-statement. */
|
|
4618
4732
|
declare function formDeclareArgs(form: FormSpec | SavedForm): {
|
|
4619
|
-
table_id: Uuid
|
|
4733
|
+
table_id: Uuid;
|
|
4620
4734
|
title: string;
|
|
4621
4735
|
questions: FormQuestionSpec[];
|
|
4622
4736
|
presentation: Record<string, unknown>;
|
|
4623
4737
|
submission_cap: number | null;
|
|
4624
|
-
quarantine_rule_id: Uuid
|
|
4625
|
-
notify_rule_id: Uuid
|
|
4626
|
-
form_id: Uuid
|
|
4738
|
+
quarantine_rule_id: Uuid | null;
|
|
4739
|
+
notify_rule_id: Uuid | null;
|
|
4740
|
+
form_id: Uuid | null;
|
|
4627
4741
|
slug: string | null;
|
|
4628
4742
|
};
|
|
4629
4743
|
/** One row of `custom.forms` back into the spec a screen and an agent both read. */
|
|
@@ -4636,7 +4750,7 @@ declare function formFromSummary(summary: FormSummary): SavedForm;
|
|
|
4636
4750
|
* through export, History and the agent's context without a parallel table.
|
|
4637
4751
|
*/
|
|
4638
4752
|
declare function submissionStamp(args: {
|
|
4639
|
-
formId: Uuid
|
|
4753
|
+
formId: Uuid | null;
|
|
4640
4754
|
formName: string;
|
|
4641
4755
|
actor: string;
|
|
4642
4756
|
onBehalfOf?: string | null;
|
|
@@ -4647,10 +4761,10 @@ interface PortalBuilderProps {
|
|
|
4647
4761
|
* OPTIONAL. The Table whose rail this was opened from. It is pre-ticked as a
|
|
4648
4762
|
* Table to expose, because that is the thing the person was looking at.
|
|
4649
4763
|
*/
|
|
4650
|
-
tableId?: Uuid | null | undefined;
|
|
4764
|
+
tableId?: Uuid$1 | null | undefined;
|
|
4651
4765
|
/** Re-state an existing portal rather than making a second one. */
|
|
4652
|
-
portalId?: Uuid | null | undefined;
|
|
4653
|
-
onSaved?: ((portalId: Uuid) => void) | undefined;
|
|
4766
|
+
portalId?: Uuid$1 | null | undefined;
|
|
4767
|
+
onSaved?: ((portalId: Uuid$1) => void) | undefined;
|
|
4654
4768
|
onClose?: (() => void) | undefined;
|
|
4655
4769
|
className?: string | undefined;
|
|
4656
4770
|
}
|
|
@@ -4680,13 +4794,13 @@ interface PortalsPanelProps {
|
|
|
4680
4794
|
* Omit it and the rail is organization-wide again, which is right for a
|
|
4681
4795
|
* mount that is not standing on a table.
|
|
4682
4796
|
*/
|
|
4683
|
-
tableId?: Uuid | undefined;
|
|
4797
|
+
tableId?: Uuid$1 | undefined;
|
|
4684
4798
|
/**
|
|
4685
4799
|
* THE PORTAL A LINK NAMED (`?rail=portals&item=<portal>`, lane HUB-FIX). Its
|
|
4686
4800
|
* card opens on arrival and is scrolled to. A portal this table is not in is
|
|
4687
4801
|
* said out loud, never swapped for another portal.
|
|
4688
4802
|
*/
|
|
4689
|
-
activePortalId?: Uuid | null | undefined;
|
|
4803
|
+
activePortalId?: Uuid$1 | null | undefined;
|
|
4690
4804
|
className?: string | undefined;
|
|
4691
4805
|
}
|
|
4692
4806
|
/** What a door answered, for a view that never holds a client of its own. */
|
|
@@ -4721,11 +4835,11 @@ interface PortalCardViewProps {
|
|
|
4721
4835
|
/** Exactly what `custom.portal_card` answered. */
|
|
4722
4836
|
card: PortalCard;
|
|
4723
4837
|
/** The Table whose page this is on, if any — marked among the ones shown. */
|
|
4724
|
-
tableId?: Uuid | undefined;
|
|
4838
|
+
tableId?: Uuid$1 | undefined;
|
|
4725
4839
|
/** Take one person's way in away. Answers the door's own past-tense sentence. */
|
|
4726
4840
|
onRevoke: (person: PortalPrincipal) => Promise<PortalAnswer<string>>;
|
|
4727
4841
|
/** What this person sees on one Table — `custom.portal_preview`'s answer. */
|
|
4728
|
-
onPreview: (person: PortalPrincipal, tableId: Uuid) => Promise<PortalAnswer<PortalPreviewRow[]>>;
|
|
4842
|
+
onPreview: (person: PortalPrincipal, tableId: Uuid$1) => Promise<PortalAnswer<PortalPreviewRow[]>>;
|
|
4729
4843
|
/** The invite control, which needs a client of its own. Absent means none is offered. */
|
|
4730
4844
|
invite?: ReactNode;
|
|
4731
4845
|
/** S6 — the look-and-forms editor, which needs a client of its own. Absent means none is offered. */
|
|
@@ -4764,8 +4878,8 @@ interface PublicPicturePickerProps {
|
|
|
4764
4878
|
label: string;
|
|
4765
4879
|
/** The organization's public pictures, as the store listed them. */
|
|
4766
4880
|
pictures: readonly PublicPicture[];
|
|
4767
|
-
value: Uuid
|
|
4768
|
-
onChange: (fileId: Uuid
|
|
4881
|
+
value: Uuid | "" | null | undefined;
|
|
4882
|
+
onChange: (fileId: Uuid | "") => void;
|
|
4769
4883
|
/** The words on the empty choice ("Organization logo", "No cover"). */
|
|
4770
4884
|
noneLabel: string;
|
|
4771
4885
|
className?: string | undefined;
|
|
@@ -4807,13 +4921,13 @@ declare function FormLookFrame({ look, title, children, contained, className }:
|
|
|
4807
4921
|
|
|
4808
4922
|
interface DigestSchedulerProps {
|
|
4809
4923
|
/** The Table the digest is about. A saved view is a view OF something. */
|
|
4810
|
-
tableId: Uuid;
|
|
4924
|
+
tableId: Uuid$1;
|
|
4811
4925
|
/**
|
|
4812
4926
|
* The view to subscribe over, when the caller already has one — a dashboard
|
|
4813
4927
|
* passes the view its blocks are filtered by. Left out, the person picks one
|
|
4814
4928
|
* of this Table's saved views or this screen saves a new one for them.
|
|
4815
4929
|
*/
|
|
4816
|
-
savedViewId?: Uuid | null | undefined;
|
|
4930
|
+
savedViewId?: Uuid$1 | null | undefined;
|
|
4817
4931
|
/**
|
|
4818
4932
|
* What the person is looking at, in their words — a dashboard's name, a view's
|
|
4819
4933
|
* name. It becomes the digest's name and, when a view has to be saved, the
|
|
@@ -4843,14 +4957,14 @@ interface DigestSchedulerProps {
|
|
|
4843
4957
|
declare function DigestScheduler({ tableId, savedViewId, subjectName, filters, onScheduled, onClose, className, existing, }: DigestSchedulerProps): react.JSX.Element;
|
|
4844
4958
|
|
|
4845
4959
|
interface SubscriptionsPanelProps {
|
|
4846
|
-
tableId: Uuid;
|
|
4960
|
+
tableId: Uuid$1;
|
|
4847
4961
|
/**
|
|
4848
4962
|
* THE DIGEST A LINK NAMED (`?rail=notifications&item=<rule>`, lane HUB-FIX).
|
|
4849
4963
|
* The rule is marked and scrolled to. This rail lists the subscriptions of the
|
|
4850
4964
|
* person signed in, so a rule that is somebody else's is said out loud as
|
|
4851
4965
|
* exactly that — never replaced by one of theirs.
|
|
4852
4966
|
*/
|
|
4853
|
-
activeRuleId?: Uuid | null | undefined;
|
|
4967
|
+
activeRuleId?: Uuid$1 | null | undefined;
|
|
4854
4968
|
className?: string | undefined;
|
|
4855
4969
|
}
|
|
4856
4970
|
/** The sentence when a link named a digest that is not in this person's list for this table. */
|
|
@@ -4935,7 +5049,7 @@ declare function viewNeedFor(layout: ViewLayout): ViewNeed | null;
|
|
|
4935
5049
|
declare function columnDeclarationFor(need: ViewNeed, label: string, options: readonly string[], fields: readonly Pick<Field, "sort">[] | null | undefined): NewFieldDeclaration;
|
|
4936
5050
|
interface ViewNeedsProps {
|
|
4937
5051
|
layout: ViewLayout;
|
|
4938
|
-
tableId: Uuid
|
|
5052
|
+
tableId: Uuid;
|
|
4939
5053
|
/** The table's columns, as the layout already holds them. */
|
|
4940
5054
|
fields: readonly Field[];
|
|
4941
5055
|
/**
|
|
@@ -4949,7 +5063,7 @@ declare function ViewNeeds({ layout, tableId, fields, onMade, className }: ViewN
|
|
|
4949
5063
|
|
|
4950
5064
|
interface FormBuilderProps {
|
|
4951
5065
|
/** The Table this form collects into. A form is a view on a real Table. */
|
|
4952
|
-
tableId: Uuid;
|
|
5066
|
+
tableId: Uuid$1;
|
|
4953
5067
|
/**
|
|
4954
5068
|
* COMPLETE DECLARATIVE SPECS an agent wrote. Any of these whose name this
|
|
4955
5069
|
* table does not have yet is saved as a record the first time the builder
|
|
@@ -4957,7 +5071,7 @@ interface FormBuilderProps {
|
|
|
4957
5071
|
* overwrites what a person has since tweaked.
|
|
4958
5072
|
*/
|
|
4959
5073
|
seed?: FormSpec[] | undefined;
|
|
4960
|
-
activeFormId?: Uuid | null | undefined;
|
|
5074
|
+
activeFormId?: Uuid$1 | null | undefined;
|
|
4961
5075
|
onActiveForm?: ((form: SavedForm) => void) | undefined;
|
|
4962
5076
|
/**
|
|
4963
5077
|
* The person asked to BUILD a form on a table that has none: make it on open, instead of an
|
|
@@ -4999,7 +5113,7 @@ interface ChartSpec {
|
|
|
4999
5113
|
id?: string;
|
|
5000
5114
|
title: string;
|
|
5001
5115
|
/** The Table this block asks about. */
|
|
5002
|
-
subject: Uuid
|
|
5116
|
+
subject: Uuid;
|
|
5003
5117
|
kind: ChartKind;
|
|
5004
5118
|
/** Field keys whose values become the groups. */
|
|
5005
5119
|
groupBy?: string[];
|
|
@@ -5026,23 +5140,23 @@ interface ChartSpec {
|
|
|
5026
5140
|
}
|
|
5027
5141
|
/** A dashboard as `custom.dashboards` reports it, in the screen's own words. */
|
|
5028
5142
|
interface SavedDashboard {
|
|
5029
|
-
id: Uuid
|
|
5143
|
+
id: Uuid;
|
|
5030
5144
|
name: string;
|
|
5031
5145
|
/** The subject Table: the one a block that names no table of its own reads. */
|
|
5032
|
-
subject: Uuid
|
|
5146
|
+
subject: Uuid | null;
|
|
5033
5147
|
blocks: ChartSpec[];
|
|
5034
5148
|
presentation: Record<string, unknown>;
|
|
5035
5149
|
/** The store's own version. A save re-states the whole dashboard. */
|
|
5036
5150
|
version: number;
|
|
5037
5151
|
}
|
|
5038
5152
|
/** One saved block back into the shape a screen edits. */
|
|
5039
|
-
declare function specFromBlock(block: DashboardBlock, subject: Uuid
|
|
5153
|
+
declare function specFromBlock(block: DashboardBlock, subject: Uuid): ChartSpec;
|
|
5040
5154
|
/**
|
|
5041
5155
|
* One block back into the door's own argument. `custom.dashboard_declare` judges
|
|
5042
5156
|
* every block on the way IN — a block naming a Field this Table does not have is
|
|
5043
5157
|
* refused BY NAME — so a canvas cannot be saved broken.
|
|
5044
5158
|
*/
|
|
5045
|
-
declare function blockFromSpec(spec: ChartSpec, subject: Uuid
|
|
5159
|
+
declare function blockFromSpec(spec: ChartSpec, subject: Uuid): DashboardBlock;
|
|
5046
5160
|
/** One row of `custom.dashboards` into the shape a screen and an agent both read. */
|
|
5047
5161
|
declare function dashboardFromSummary(summary: DashboardSummary): SavedDashboard;
|
|
5048
5162
|
/**
|
|
@@ -5051,12 +5165,12 @@ declare function dashboardFromSummary(summary: DashboardSummary): SavedDashboard
|
|
|
5051
5165
|
* a save that dropped it would quietly lose the question the person asked the
|
|
5052
5166
|
* agent, which is what the canvas is FOR.
|
|
5053
5167
|
*/
|
|
5054
|
-
declare function dashboardDeclareArgs(board: SavedDashboard, subject: Uuid
|
|
5055
|
-
table_id: Uuid
|
|
5168
|
+
declare function dashboardDeclareArgs(board: SavedDashboard, subject: Uuid): {
|
|
5169
|
+
table_id: Uuid;
|
|
5056
5170
|
name: string;
|
|
5057
5171
|
blocks: DashboardBlock[];
|
|
5058
5172
|
presentation: Record<string, unknown>;
|
|
5059
|
-
dashboard_id: Uuid
|
|
5173
|
+
dashboard_id: Uuid | null;
|
|
5060
5174
|
};
|
|
5061
5175
|
/**
|
|
5062
5176
|
* The series palette. Six SEMANTIC tokens the design system already flips for
|
|
@@ -5130,18 +5244,18 @@ declare function ChartLegendContent({ payload, config, className, }: {
|
|
|
5130
5244
|
|
|
5131
5245
|
interface DocTemplateProps {
|
|
5132
5246
|
/** The Table these templates render. */
|
|
5133
|
-
tableId: Uuid;
|
|
5247
|
+
tableId: Uuid$1;
|
|
5134
5248
|
/** COMPLETE templates an agent wrote, in Field keys. Saved once, never overwritten. */
|
|
5135
5249
|
seed?: DocTemplateSpec[] | undefined;
|
|
5136
|
-
activeTemplateId?: Uuid | null | undefined;
|
|
5250
|
+
activeTemplateId?: Uuid$1 | null | undefined;
|
|
5137
5251
|
onActiveTemplate?: ((template: DocTemplateRow) => void) | undefined;
|
|
5138
5252
|
className?: string | undefined;
|
|
5139
5253
|
}
|
|
5140
5254
|
declare function DocTemplate({ tableId, seed, activeTemplateId, onActiveTemplate, className }: DocTemplateProps): react.JSX.Element;
|
|
5141
5255
|
|
|
5142
5256
|
interface DocRenderProps {
|
|
5143
|
-
templateId: Uuid;
|
|
5144
|
-
recordId: Uuid;
|
|
5257
|
+
templateId: Uuid$1;
|
|
5258
|
+
recordId: Uuid$1;
|
|
5145
5259
|
/** A name for the file when somebody takes the PDF. */
|
|
5146
5260
|
filename?: string | undefined;
|
|
5147
5261
|
onRendered?: ((render: DocRenderRow) => void) | undefined;
|
|
@@ -5150,8 +5264,8 @@ interface DocRenderProps {
|
|
|
5150
5264
|
declare function DocRender({ templateId, recordId, filename, onRendered, className }: DocRenderProps): react.JSX.Element;
|
|
5151
5265
|
|
|
5152
5266
|
interface SignBlockProps {
|
|
5153
|
-
tableId: Uuid;
|
|
5154
|
-
recordId: Uuid;
|
|
5267
|
+
tableId: Uuid$1;
|
|
5268
|
+
recordId: Uuid$1;
|
|
5155
5269
|
/** The frozen version being signed. Without one there is nothing to seal. */
|
|
5156
5270
|
render: DocRenderRow | null;
|
|
5157
5271
|
className?: string | undefined;
|
|
@@ -5161,7 +5275,7 @@ declare function SignBlock({ tableId, recordId, render, className }: SignBlockPr
|
|
|
5161
5275
|
/** THE DECLARATIVE SPEC an agent writes. One declaration and a person is told. */
|
|
5162
5276
|
interface NotifyRuleSpec {
|
|
5163
5277
|
name: string;
|
|
5164
|
-
savedViewId: Uuid;
|
|
5278
|
+
savedViewId: Uuid$1;
|
|
5165
5279
|
/** `instant` fires the moment a record enters the view; the rest are summaries. */
|
|
5166
5280
|
cadence?: string;
|
|
5167
5281
|
/** The summary's schedule — "monday 08:00". Meaningless for `instant`. */
|
|
@@ -5170,12 +5284,12 @@ interface NotifyRuleSpec {
|
|
|
5170
5284
|
/** The hours not to be told in. A send inside them is MOVED, never dropped. */
|
|
5171
5285
|
quietHours?: QuietHours | null;
|
|
5172
5286
|
/** Who is told. Left out, the person setting it up — "tell ME". */
|
|
5173
|
-
recipientUserId?: Uuid | null;
|
|
5287
|
+
recipientUserId?: Uuid$1 | null;
|
|
5174
5288
|
eventKey?: string;
|
|
5175
5289
|
}
|
|
5176
5290
|
interface NotifyRuleEditorProps {
|
|
5177
5291
|
/** The Table these subscriptions are about — the Rule's scope. */
|
|
5178
|
-
tableId: Uuid;
|
|
5292
|
+
tableId: Uuid$1;
|
|
5179
5293
|
/** COMPLETE declarative subscriptions an agent wrote. Saved once, never overwritten. */
|
|
5180
5294
|
seed?: NotifyRuleSpec[] | undefined;
|
|
5181
5295
|
/**
|
|
@@ -5183,9 +5297,9 @@ interface NotifyRuleEditorProps {
|
|
|
5183
5297
|
* Rule). Given with `onChoose`, each subscription offers to be the one, and a
|
|
5184
5298
|
* subscription made here becomes the one the moment the store has it.
|
|
5185
5299
|
*/
|
|
5186
|
-
chosenRuleId?: Uuid | null | undefined;
|
|
5300
|
+
chosenRuleId?: Uuid$1 | null | undefined;
|
|
5187
5301
|
/** CHOOSE MODE — called with the chosen subscription's Rule id, or null to choose none. */
|
|
5188
|
-
onChoose?: ((ruleId: Uuid | null) => void) | undefined;
|
|
5302
|
+
onChoose?: ((ruleId: Uuid$1 | null) => void) | undefined;
|
|
5189
5303
|
className?: string | undefined;
|
|
5190
5304
|
}
|
|
5191
5305
|
declare function NotifyRuleEditor({ tableId, seed, chosenRuleId, onChoose, className }: NotifyRuleEditorProps): react.JSX.Element;
|
|
@@ -5194,7 +5308,7 @@ interface ChartBlockProps {
|
|
|
5194
5308
|
/** One block out of the canvas's single run — answered, or refused. */
|
|
5195
5309
|
block: DashboardBlockResult;
|
|
5196
5310
|
/** The dashboard's subject Table, for a block that names none of its own. */
|
|
5197
|
-
subject: Uuid
|
|
5311
|
+
subject: Uuid;
|
|
5198
5312
|
/** The table this chart reads, named in its header on a dashboard across tables. */
|
|
5199
5313
|
tableName?: string | undefined;
|
|
5200
5314
|
className?: string | undefined;
|
|
@@ -5219,8 +5333,8 @@ declare function ChartBlock({ block, subject, tableName, className, centerValue,
|
|
|
5219
5333
|
|
|
5220
5334
|
interface DashboardCanvasProps {
|
|
5221
5335
|
/** The Table these blocks are about. */
|
|
5222
|
-
tableId: Uuid;
|
|
5223
|
-
activeDashboardId?: Uuid | null | undefined;
|
|
5336
|
+
tableId: Uuid$1;
|
|
5337
|
+
activeDashboardId?: Uuid$1 | null | undefined;
|
|
5224
5338
|
/** The one filter bar across the canvas. Merged UNDER each block's own filter. */
|
|
5225
5339
|
filter?: Record<string, AggregateFilter> | undefined;
|
|
5226
5340
|
/**
|
|
@@ -5229,7 +5343,7 @@ interface DashboardCanvasProps {
|
|
|
5229
5343
|
*/
|
|
5230
5344
|
createOnMount?: boolean | undefined;
|
|
5231
5345
|
/** Told the id of a dashboard this canvas made (the starter, or `createOnMount`'s). */
|
|
5232
|
-
onCreated?: ((dashboardId: Uuid) => void) | undefined;
|
|
5346
|
+
onCreated?: ((dashboardId: Uuid$1) => void) | undefined;
|
|
5233
5347
|
className?: string | undefined;
|
|
5234
5348
|
}
|
|
5235
5349
|
declare function DashboardCanvas({ tableId, activeDashboardId, filter, createOnMount, onCreated, className }: DashboardCanvasProps): react.JSX.Element;
|
|
@@ -5318,40 +5432,40 @@ declare function flatWhere(where: RuleExpression | null, fields: readonly Field[
|
|
|
5318
5432
|
* ASK THE STORE. `fields` are this table's Fields (the condition builder writes Fields by id, and a
|
|
5319
5433
|
* formula column cannot be asked "as of"). Every number in the answer is a door's.
|
|
5320
5434
|
*/
|
|
5321
|
-
declare function askQuestion(client: RecordsClient, tableId: Uuid
|
|
5435
|
+
declare function askQuestion(client: RecordsClient, tableId: Uuid, spec: QuestionSpec, fields: readonly Field[]): Promise<RecordsResult<QuestionAnswer>>;
|
|
5322
5436
|
/**
|
|
5323
5437
|
* THE COLUMNS THIS READER MAY NOT READ, asked of the store: one aggregate measuring how many
|
|
5324
5438
|
* records fill each column that carries a sensitivity, and every measure the store WITHHOLDS is a
|
|
5325
5439
|
* column never offered. Nothing is guessed from levels here; the store decides, as it does for the
|
|
5326
5440
|
* grid's cells.
|
|
5327
5441
|
*/
|
|
5328
|
-
declare function unreadableKeys(client: RecordsClient, tableId: Uuid
|
|
5442
|
+
declare function unreadableKeys(client: RecordsClient, tableId: Uuid, fields: readonly Field[]): Promise<Set<string>>;
|
|
5329
5443
|
/** The columns a measure other than count may read: numbers (formula arithmetic included); min/max also dates. */
|
|
5330
5444
|
declare function measurableFields(fields: readonly Field[], op: QuestionOp): Field[];
|
|
5331
5445
|
/** The saved-view surface a Question is kept under, beside the table's views (`custom/records`). */
|
|
5332
5446
|
declare const QUESTION_SURFACE = "custom/records/question";
|
|
5333
5447
|
interface SavedQuestion {
|
|
5334
|
-
id: Uuid
|
|
5448
|
+
id: Uuid;
|
|
5335
5449
|
name: string;
|
|
5336
5450
|
spec: QuestionSpec;
|
|
5337
5451
|
/** Shared with the organization (`internal`) or kept for its maker (`personal`). */
|
|
5338
5452
|
shared: boolean;
|
|
5339
5453
|
version: number;
|
|
5340
|
-
createdBy: Uuid
|
|
5454
|
+
createdBy: Uuid | null;
|
|
5341
5455
|
}
|
|
5342
5456
|
/** The table's Questions this person may read (the row's own access decides). */
|
|
5343
|
-
declare function questionsOf(client: RecordsClient, tableId: Uuid
|
|
5457
|
+
declare function questionsOf(client: RecordsClient, tableId: Uuid): Promise<RecordsResult<SavedQuestion[]>>;
|
|
5344
5458
|
/** Keep a Question (new when `id` is absent). `null` data = somebody changed it first. */
|
|
5345
5459
|
declare function questionSave(client: RecordsClient, args: {
|
|
5346
|
-
id?: Uuid
|
|
5347
|
-
tableId: Uuid
|
|
5460
|
+
id?: Uuid | null;
|
|
5461
|
+
tableId: Uuid;
|
|
5348
5462
|
name: string;
|
|
5349
5463
|
spec: QuestionSpec;
|
|
5350
5464
|
shared: boolean;
|
|
5351
5465
|
expectedVersion?: number;
|
|
5352
5466
|
}): Promise<RecordsResult<SavedQuestion | null>>;
|
|
5353
5467
|
/** Archive a Question (its maker, or an admin of it). */
|
|
5354
|
-
declare function questionArchive(client: RecordsClient, id: Uuid
|
|
5468
|
+
declare function questionArchive(client: RecordsClient, id: Uuid, version?: number): Promise<RecordsResult<boolean>>;
|
|
5355
5469
|
|
|
5356
5470
|
/** A related table's columns, keyed by the relation that reaches it. */
|
|
5357
5471
|
type Related = Record<string, {
|
|
@@ -5359,9 +5473,9 @@ type Related = Record<string, {
|
|
|
5359
5473
|
fields: Field[];
|
|
5360
5474
|
}>;
|
|
5361
5475
|
interface QuestionPanelProps {
|
|
5362
|
-
tableId: Uuid;
|
|
5476
|
+
tableId: Uuid$1;
|
|
5363
5477
|
/** A saved Question the address named (`?view=questions&item=<id>`). */
|
|
5364
|
-
activeQuestionId?: Uuid | null | undefined;
|
|
5478
|
+
activeQuestionId?: Uuid$1 | null | undefined;
|
|
5365
5479
|
/**
|
|
5366
5480
|
* A question asked elsewhere and not saved yet (the table's Ask box, "Open in Questions"):
|
|
5367
5481
|
* the builder opens holding it, as a new question. A new object each time it is handed over.
|
|
@@ -5372,7 +5486,7 @@ interface QuestionPanelProps {
|
|
|
5372
5486
|
declare function QuestionPanel({ tableId, activeQuestionId, draft, className }: QuestionPanelProps): react.JSX.Element;
|
|
5373
5487
|
/** The answer as Questions draws it — also the table's Ask box's answer (`TableAsk.tsx`): one drawing, one number. */
|
|
5374
5488
|
declare function QuestionAnswerView({ tableId, spec, answer, fields, related }: {
|
|
5375
|
-
tableId: Uuid;
|
|
5489
|
+
tableId: Uuid$1;
|
|
5376
5490
|
spec: QuestionSpec;
|
|
5377
5491
|
answer: QuestionAnswer;
|
|
5378
5492
|
fields: Field[];
|
|
@@ -5380,7 +5494,7 @@ declare function QuestionAnswerView({ tableId, spec, answer, fields, related }:
|
|
|
5380
5494
|
}): react.JSX.Element;
|
|
5381
5495
|
|
|
5382
5496
|
interface TableAskProps {
|
|
5383
|
-
tableId: Uuid;
|
|
5497
|
+
tableId: Uuid$1;
|
|
5384
5498
|
/** Open the answered question in the Question builder. Absent, the button is not drawn. */
|
|
5385
5499
|
onOpenInQuestions?: ((spec: QuestionSpec) => void) | undefined;
|
|
5386
5500
|
}
|
|
@@ -5406,13 +5520,13 @@ declare function questionFromWords(text: string, fields: readonly Field[], choic
|
|
|
5406
5520
|
|
|
5407
5521
|
interface PageScreenProps {
|
|
5408
5522
|
/** The page to open. */
|
|
5409
|
-
pageId?: Uuid | null | undefined;
|
|
5523
|
+
pageId?: Uuid$1 | null | undefined;
|
|
5410
5524
|
/** Make a new page on this Table instead (its starter: a list and a record panel), then open it. */
|
|
5411
|
-
newOnTable?: Uuid | null | undefined;
|
|
5525
|
+
newOnTable?: Uuid$1 | null | undefined;
|
|
5412
5526
|
/** The signed-in person: "Assigned to me" is her own Person record. */
|
|
5413
5527
|
viewerUserId?: string | null | undefined;
|
|
5414
5528
|
/** Told the id of the page `newOnTable` made. */
|
|
5415
|
-
onCreated?: ((pageId: Uuid) => void) | undefined;
|
|
5529
|
+
onCreated?: ((pageId: Uuid$1) => void) | undefined;
|
|
5416
5530
|
/** The page was archived: the host leaves it. */
|
|
5417
5531
|
onArchived?: (() => void) | undefined;
|
|
5418
5532
|
/** Open in edit mode (a page just made). */
|
|
@@ -5440,9 +5554,9 @@ interface PageBlockBase {
|
|
|
5440
5554
|
}
|
|
5441
5555
|
interface ListPageBlock extends PageBlockBase {
|
|
5442
5556
|
kind: "list";
|
|
5443
|
-
table_id: Uuid
|
|
5557
|
+
table_id: Uuid;
|
|
5444
5558
|
/** A saved view of the table: its filter and sort shape the list. */
|
|
5445
|
-
view_id?: Uuid
|
|
5559
|
+
view_id?: Uuid | null;
|
|
5446
5560
|
/** The block's own question, the store's flat filter (field key → value). */
|
|
5447
5561
|
filter?: RecordFilter;
|
|
5448
5562
|
/** The columns shown, by field key; left out, the first few the table declares. */
|
|
@@ -5462,18 +5576,18 @@ interface ButtonPageBlock extends PageBlockBase {
|
|
|
5462
5576
|
kind: "button";
|
|
5463
5577
|
/** The list block whose selected row the action runs on. */
|
|
5464
5578
|
source: string;
|
|
5465
|
-
table_id: Uuid
|
|
5579
|
+
table_id: Uuid;
|
|
5466
5580
|
/** An existing row action of that table (`custom.row_actions`). */
|
|
5467
|
-
action_id: Uuid
|
|
5581
|
+
action_id: Uuid;
|
|
5468
5582
|
}
|
|
5469
5583
|
interface FormPageBlock extends PageBlockBase {
|
|
5470
5584
|
kind: "form";
|
|
5471
|
-
table_id: Uuid
|
|
5472
|
-
form_id: Uuid
|
|
5585
|
+
table_id: Uuid;
|
|
5586
|
+
form_id: Uuid;
|
|
5473
5587
|
}
|
|
5474
5588
|
interface FilterPageBlock extends PageBlockBase {
|
|
5475
5589
|
kind: "filter";
|
|
5476
|
-
table_id: Uuid
|
|
5590
|
+
table_id: Uuid;
|
|
5477
5591
|
/** A choice (or yes/no) column of that table. */
|
|
5478
5592
|
field: string;
|
|
5479
5593
|
/** The list blocks it narrows. Empty = every list on the page over the same table. */
|
|
@@ -5519,7 +5633,7 @@ declare function pagePresentation(presentation: Record<string, unknown> | null |
|
|
|
5519
5633
|
* THE STARTER PAGE on one table, the way Airtable's record-review layout starts: the table's records
|
|
5520
5634
|
* on the left, the chosen one on the right. One press makes a page that already works.
|
|
5521
5635
|
*/
|
|
5522
|
-
declare function starterPageBlocks(tableId: Uuid
|
|
5636
|
+
declare function starterPageBlocks(tableId: Uuid): PageBlock[];
|
|
5523
5637
|
/** The list blocks a filter block narrows: those it names, or every list over its table. */
|
|
5524
5638
|
declare function filterTargets(filter: FilterPageBlock, blocks: readonly PageBlock[]): string[];
|
|
5525
5639
|
/**
|
|
@@ -5535,14 +5649,14 @@ declare function combineFilter(base: StoreFilter | null | undefined, extra: Reco
|
|
|
5535
5649
|
};
|
|
5536
5650
|
|
|
5537
5651
|
interface FormsPanelProps {
|
|
5538
|
-
tableId: Uuid;
|
|
5652
|
+
tableId: Uuid$1;
|
|
5539
5653
|
/**
|
|
5540
5654
|
* THE FORM A LINK NAMED (`?rail=forms&item=<form>`, lane HUB-FIX). The rail
|
|
5541
5655
|
* opens ON it: marked and scrolled to, and — for somebody who may build — its
|
|
5542
5656
|
* builder open on that form. An id this table has no form by is said out
|
|
5543
5657
|
* loud, never swapped for the first form in the list.
|
|
5544
5658
|
*/
|
|
5545
|
-
activeFormId?: Uuid | null | undefined;
|
|
5659
|
+
activeFormId?: Uuid$1 | null | undefined;
|
|
5546
5660
|
className?: string | undefined;
|
|
5547
5661
|
}
|
|
5548
5662
|
/** The sentence when a link named a form this table does not have. */
|
|
@@ -5571,7 +5685,7 @@ type FormAsked = {
|
|
|
5571
5685
|
type FormSubmitOutcome = {
|
|
5572
5686
|
ok: true;
|
|
5573
5687
|
message?: string | null;
|
|
5574
|
-
recordId?: Uuid | null;
|
|
5688
|
+
recordId?: Uuid$1 | null;
|
|
5575
5689
|
} | {
|
|
5576
5690
|
ok: false;
|
|
5577
5691
|
message: string;
|
|
@@ -5620,7 +5734,7 @@ interface FormRunnerProps {
|
|
|
5620
5734
|
resumed?: boolean | undefined;
|
|
5621
5735
|
/** Preview mode answers the questions but writes nothing, and says so. */
|
|
5622
5736
|
preview?: boolean | undefined;
|
|
5623
|
-
onSubmitted?: ((recordId: Uuid | null) => void) | undefined;
|
|
5737
|
+
onSubmitted?: ((recordId: Uuid$1 | null) => void) | undefined;
|
|
5624
5738
|
className?: string | undefined;
|
|
5625
5739
|
}
|
|
5626
5740
|
/**
|
|
@@ -5632,11 +5746,11 @@ declare function FormRunner(props: FormRunnerProps): react.JSX.Element;
|
|
|
5632
5746
|
|
|
5633
5747
|
interface ChecklistRunnerProps {
|
|
5634
5748
|
/** The Table runs are ABOUT. On a record page, the record's own table. */
|
|
5635
|
-
tableId?: Uuid | null | undefined;
|
|
5749
|
+
tableId?: Uuid$1 | null | undefined;
|
|
5636
5750
|
/** Runs about THIS record — a new hire, a matter, a job. */
|
|
5637
|
-
recordId?: Uuid | null | undefined;
|
|
5751
|
+
recordId?: Uuid$1 | null | undefined;
|
|
5638
5752
|
/** One run, named outright. Overrides the two above. */
|
|
5639
|
-
runId?: Uuid | null | undefined;
|
|
5753
|
+
runId?: Uuid$1 | null | undefined;
|
|
5640
5754
|
/** Show runs that have been closed too. The default is what is still open. */
|
|
5641
5755
|
includeClosed?: boolean | undefined;
|
|
5642
5756
|
/** Offer the templates that could be started here. On by default with a record. */
|
|
@@ -5670,7 +5784,7 @@ declare function StepRow({ step, busy, onComplete, onAssign, className, }: {
|
|
|
5670
5784
|
*/
|
|
5671
5785
|
declare function useMyChecklistSteps(limit?: number): {
|
|
5672
5786
|
steps: Array<ChecklistRunStep & {
|
|
5673
|
-
run_id: Uuid;
|
|
5787
|
+
run_id: Uuid$1;
|
|
5674
5788
|
run_name: string;
|
|
5675
5789
|
}>;
|
|
5676
5790
|
loading: boolean;
|
|
@@ -5689,12 +5803,12 @@ declare function MyChecklistSteps({ className, onlyIds, onSteps, actions, }: {
|
|
|
5689
5803
|
/** Every step id this group holds, so the inbox can draw each step once — here, where it is finished. */
|
|
5690
5804
|
onSteps?: ((ids: string[]) => void) | undefined;
|
|
5691
5805
|
/** The inbox's own controls for a step (snooze, done), drawn beside it. */
|
|
5692
|
-
actions?: ((stepId: Uuid) => ReactNode) | undefined;
|
|
5806
|
+
actions?: ((stepId: Uuid$1) => ReactNode) | undefined;
|
|
5693
5807
|
}): react.JSX.Element | null;
|
|
5694
5808
|
interface ChecklistsPanelProps {
|
|
5695
|
-
tableId: Uuid;
|
|
5809
|
+
tableId: Uuid$1;
|
|
5696
5810
|
/** Open the record a run is about. */
|
|
5697
|
-
onOpenRecord?: ((recordId: Uuid) => void) | undefined;
|
|
5811
|
+
onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
|
|
5698
5812
|
className?: string | undefined;
|
|
5699
5813
|
}
|
|
5700
5814
|
/**
|
|
@@ -5713,15 +5827,15 @@ declare function ChecklistsPanel({ tableId, onOpenRecord, className }: Checklist
|
|
|
5713
5827
|
* validator here: a rule written twice is a rule that will disagree with itself.
|
|
5714
5828
|
*/
|
|
5715
5829
|
declare function ChecklistTemplateEditor({ aboutTableId, templateId, onDone, onSaved, className, }: {
|
|
5716
|
-
aboutTableId: Uuid;
|
|
5717
|
-
templateId?: Uuid | null | undefined;
|
|
5830
|
+
aboutTableId: Uuid$1;
|
|
5831
|
+
templateId?: Uuid$1 | null | undefined;
|
|
5718
5832
|
/** Cancel; and, when the host passes no `onSaved`, a finished Save. */
|
|
5719
5833
|
onDone?: (() => void) | undefined;
|
|
5720
5834
|
/**
|
|
5721
5835
|
* A Save landed: the checklist's id. Passed, the editor STAYS open and says it is saved (the
|
|
5722
5836
|
* host decides where to go); every later Save re-states that same checklist.
|
|
5723
5837
|
*/
|
|
5724
|
-
onSaved?: ((templateId: Uuid) => void) | undefined;
|
|
5838
|
+
onSaved?: ((templateId: Uuid$1) => void) | undefined;
|
|
5725
5839
|
className?: string | undefined;
|
|
5726
5840
|
}): react.JSX.Element;
|
|
5727
5841
|
|
|
@@ -5743,9 +5857,9 @@ declare function whyNotAskable(fields: readonly Field[], hidden?: readonly strin
|
|
|
5743
5857
|
declare const STORE_ANSWERS_THESE: readonly ["slot", "status", "booked_with"];
|
|
5744
5858
|
interface BookingBuilderProps {
|
|
5745
5859
|
/** The Table the appointments land in. An appointment is an ordinary record in it. */
|
|
5746
|
-
tableId: Uuid;
|
|
5860
|
+
tableId: Uuid$1;
|
|
5747
5861
|
/** Re-state an existing page rather than making a second one over the same Table. */
|
|
5748
|
-
bookingId?: Uuid | null | undefined;
|
|
5862
|
+
bookingId?: Uuid$1 | null | undefined;
|
|
5749
5863
|
/** Called after a save, so the list this opened from re-reads the store. */
|
|
5750
5864
|
onSaved?: ((page: {
|
|
5751
5865
|
form_id: string;
|
|
@@ -5768,13 +5882,13 @@ interface BookingSlotsProps {
|
|
|
5768
5882
|
* booking page in this organization, which is the same door asked the wider
|
|
5769
5883
|
* question, never a second list.
|
|
5770
5884
|
*/
|
|
5771
|
-
tableId?: Uuid | null | undefined;
|
|
5885
|
+
tableId?: Uuid$1 | null | undefined;
|
|
5772
5886
|
/**
|
|
5773
5887
|
* THE BOOKING PAGE A LINK NAMED (`?rail=bookings&item=<page>`, lane HUB-FIX,
|
|
5774
5888
|
* VERIFIER-16 M4). It is marked and scrolled to. A page this rail does not
|
|
5775
5889
|
* list is said out loud, never swapped for another.
|
|
5776
5890
|
*/
|
|
5777
|
-
activeBookingId?: Uuid | null | undefined;
|
|
5891
|
+
activeBookingId?: Uuid$1 | null | undefined;
|
|
5778
5892
|
className?: string | undefined;
|
|
5779
5893
|
}
|
|
5780
5894
|
/** The sentence when a link named a booking page this rail does not list. */
|
|
@@ -5806,9 +5920,9 @@ interface CaptureSheetProps {
|
|
|
5806
5920
|
* Without one this stays the ad-hoc capture below, which guesses which Field a
|
|
5807
5921
|
* reading goes in — right for a quick one-off, wrong for a crew.
|
|
5808
5922
|
*/
|
|
5809
|
-
sheetId?: Uuid | undefined;
|
|
5923
|
+
sheetId?: Uuid$1 | undefined;
|
|
5810
5924
|
/** The Table a capture becomes a record in. Not needed when `sheetId` is given. */
|
|
5811
|
-
tableId: Uuid;
|
|
5925
|
+
tableId: Uuid$1;
|
|
5812
5926
|
/** Which Field a reading's number goes in. Defaults to the first range Field. */
|
|
5813
5927
|
readingField?: string | undefined;
|
|
5814
5928
|
/** Which Field the note goes in. Defaults to the Table's title field. */
|
|
@@ -5820,7 +5934,7 @@ interface CaptureSheetProps {
|
|
|
5820
5934
|
declare function CaptureSheet({ sheetId, tableId, readingField, noteField, attachmentField, className, }: CaptureSheetProps): react.JSX.Element;
|
|
5821
5935
|
|
|
5822
5936
|
interface CaptureRunProps {
|
|
5823
|
-
sheetId: Uuid
|
|
5937
|
+
sheetId: Uuid;
|
|
5824
5938
|
/**
|
|
5825
5939
|
* The sheet, already loaded — by a server render, or from the phone's own copy. Given
|
|
5826
5940
|
* one, this component makes NO network call before the first question is on screen.
|
|
@@ -5834,7 +5948,7 @@ declare function CaptureRun({ sheetId, face: given, className }: CaptureRunProps
|
|
|
5834
5948
|
|
|
5835
5949
|
interface PortalShellProps {
|
|
5836
5950
|
/** The Table the outsider's records belong to. */
|
|
5837
|
-
tableId: Uuid;
|
|
5951
|
+
tableId: Uuid$1;
|
|
5838
5952
|
/** OPTIONAL. A form the outsider may send — their one way to put something in. */
|
|
5839
5953
|
form?: FormSpec | undefined;
|
|
5840
5954
|
/** What the resources are called in `iam`'s own vocabulary. Default `record`. */
|
|
@@ -5852,12 +5966,12 @@ declare function PublicViewPage({ slug, className }: PublicViewPageProps): react
|
|
|
5852
5966
|
|
|
5853
5967
|
interface EmbedFrameProps {
|
|
5854
5968
|
/** The Table whose rights decide whether an embed may be issued at all. */
|
|
5855
|
-
tableId: Uuid;
|
|
5969
|
+
tableId: Uuid$1;
|
|
5856
5970
|
/** A write embed names the form it writes into. */
|
|
5857
|
-
formId?: Uuid | null | undefined;
|
|
5971
|
+
formId?: Uuid$1 | null | undefined;
|
|
5858
5972
|
/** A read embed names the saved view or the record it shows. */
|
|
5859
|
-
savedViewId?: Uuid | null | undefined;
|
|
5860
|
-
recordId?: Uuid | null | undefined;
|
|
5973
|
+
savedViewId?: Uuid$1 | null | undefined;
|
|
5974
|
+
recordId?: Uuid$1 | null | undefined;
|
|
5861
5975
|
/** Where the embedded page is served from — the `src` of the iframe. */
|
|
5862
5976
|
embedUrl: string;
|
|
5863
5977
|
className?: string | undefined;
|
|
@@ -5911,7 +6025,7 @@ interface RecordsMountProps {
|
|
|
5911
6025
|
children: ReactNode;
|
|
5912
6026
|
}
|
|
5913
6027
|
declare function RecordsMount({ config, host, letTheStoreDecideRights, children, }: RecordsMountProps): react.JSX.Element;
|
|
5914
|
-
declare function personActor(userId: Uuid
|
|
6028
|
+
declare function personActor(userId: Uuid | null | undefined): RecordsActor;
|
|
5915
6029
|
declare function recordsDataSource(client: object, fallbackSchema?: string): RecordsDataSource;
|
|
5916
6030
|
|
|
5917
6031
|
type TableLane = "mine" | "organization" | "system" | "community" | "app";
|
|
@@ -5980,7 +6094,7 @@ interface TablesHomeProps {
|
|
|
5980
6094
|
* unchanged; a host that ignores it lands on the records, which is what it
|
|
5981
6095
|
* did before, rather than on a screen it does not know how to address.
|
|
5982
6096
|
*/
|
|
5983
|
-
onOpenTable?: ((tableId: Uuid
|
|
6097
|
+
onOpenTable?: ((tableId: Uuid, dashboardId?: Uuid) => void) | undefined;
|
|
5984
6098
|
/**
|
|
5985
6099
|
* THE ORGANIZATION EVERY ROW HERE LIVES IN, BY NAME (lane SC-1-TAILS; access-is-personal: a
|
|
5986
6100
|
* list filtered by one organization says which). Each row carries a quiet "Lives in <name>"
|
|
@@ -6018,7 +6132,7 @@ interface TablesHomeProps {
|
|
|
6018
6132
|
declare function TablesHome({ onOpenTable, organizationName, makingOnly, askedBy, templatesHref, className }: TablesHomeProps): react.JSX.Element;
|
|
6019
6133
|
|
|
6020
6134
|
interface WhereItLivesProps {
|
|
6021
|
-
tableId: Uuid
|
|
6135
|
+
tableId: Uuid;
|
|
6022
6136
|
/**
|
|
6023
6137
|
* The name the screen already holds (a list whose rows all live in one organization), shown
|
|
6024
6138
|
* until the store answers — and, on a row, instead of asking at all until the chip is pressed:
|
|
@@ -6027,7 +6141,7 @@ interface WhereItLivesProps {
|
|
|
6027
6141
|
knownOrganizationName?: string | null | undefined;
|
|
6028
6142
|
/** After a move lands: the host re-reads (the list, its rows, the page). */
|
|
6029
6143
|
onMoved?: ((to: {
|
|
6030
|
-
id: Uuid
|
|
6144
|
+
id: Uuid;
|
|
6031
6145
|
name: string;
|
|
6032
6146
|
}) => void) | undefined;
|
|
6033
6147
|
/**
|
|
@@ -6071,7 +6185,7 @@ declare function sameViewAddress(a: ViewAddressState | null | undefined, b: View
|
|
|
6071
6185
|
|
|
6072
6186
|
type Rail = "none" | "settings" | "inbox" | "import" | "field" | "record" | "new-record" | "forms" | "bookings" | "checklists" | "notifications" | "portals" | "who-changed" | "export";
|
|
6073
6187
|
interface TablePageProps$1 {
|
|
6074
|
-
tableId: Uuid
|
|
6188
|
+
tableId: Uuid;
|
|
6075
6189
|
/**
|
|
6076
6190
|
* `embedded` — a table inside a page, like Notion's inline database (CHAIR-GRID-LINKS 06): the
|
|
6077
6191
|
* same page with its furniture off. No title row (the host draws it), no Layout chooser, and the
|
|
@@ -6121,7 +6235,7 @@ interface TablePageProps$1 {
|
|
|
6121
6235
|
* canvas on that dashboard; absent, the page opens on the records exactly as
|
|
6122
6236
|
* it always has.
|
|
6123
6237
|
*/
|
|
6124
|
-
activeDashboardId?: Uuid
|
|
6238
|
+
activeDashboardId?: Uuid | null | undefined;
|
|
6125
6239
|
/**
|
|
6126
6240
|
* THE RECORD A LINK NAMED, OPENED ON ARRIVAL.
|
|
6127
6241
|
*
|
|
@@ -6134,7 +6248,7 @@ interface TablePageProps$1 {
|
|
|
6134
6248
|
*
|
|
6135
6249
|
* Absent, nothing changes: the page opens exactly as it did.
|
|
6136
6250
|
*/
|
|
6137
|
-
activeRecordId?: Uuid
|
|
6251
|
+
activeRecordId?: Uuid | null | undefined;
|
|
6138
6252
|
/**
|
|
6139
6253
|
* WHICH VIEW THE ADDRESS NAMES — `grid`, `kanban`, `calendar`, `gallery` or
|
|
6140
6254
|
* `dashboards`, exactly as the host read it out of `?view=`.
|
|
@@ -6223,7 +6337,7 @@ interface TablePageProps$1 {
|
|
|
6223
6337
|
* opened, the rule marked and scrolled to. An id the rail does not hold is
|
|
6224
6338
|
* said out loud by the rail, never replaced by its first row.
|
|
6225
6339
|
*/
|
|
6226
|
-
activeItemId?: Uuid
|
|
6340
|
+
activeItemId?: Uuid | null | undefined;
|
|
6227
6341
|
/**
|
|
6228
6342
|
* THE PAGE'S HEADER, handed the table's own page-level controls (lane TABLE-PAGE-CHROME, owner
|
|
6229
6343
|
* 2026-09-25: "align with the app's top-tier pages"). Called with `actions` — Share and the
|
|
@@ -6416,9 +6530,9 @@ declare function surfaceChosen(current: Surface, asking: SurfacePress): boolean;
|
|
|
6416
6530
|
* WHAT THE PAGE OPENS SHOWING — one pure function, so the dead link can be shown failing.
|
|
6417
6531
|
* See `TablePageProps.activeRecordId` for the defect it closes.
|
|
6418
6532
|
*/
|
|
6419
|
-
declare function openingRail(activeRecordId: Uuid
|
|
6533
|
+
declare function openingRail(activeRecordId: Uuid | null | undefined, activeRail?: string | null | undefined): {
|
|
6420
6534
|
rail: "record" | "none" | Exclude<LinkRail, "share">;
|
|
6421
|
-
record: Uuid
|
|
6535
|
+
record: Uuid | null;
|
|
6422
6536
|
};
|
|
6423
6537
|
/** The rails a link may open, plus `share`, which opens the share dialog over the page. */
|
|
6424
6538
|
type LinkRail = "forms" | "bookings" | "checklists" | "notifications" | "portals" | "settings" | "import" | "inbox" | "export" | "field" | "share";
|
|
@@ -6444,7 +6558,7 @@ declare const SHARE_NOT_YOURS_LINE: string;
|
|
|
6444
6558
|
* A `?dashboard=<id>` with no `?view=` still opens the canvas, because that
|
|
6445
6559
|
* link predates this one and must keep working.
|
|
6446
6560
|
*/
|
|
6447
|
-
declare function openingView(activeView: string | null | undefined, activeDashboardId: Uuid
|
|
6561
|
+
declare function openingView(activeView: string | null | undefined, activeDashboardId: Uuid | null | undefined): {
|
|
6448
6562
|
main: MainView;
|
|
6449
6563
|
layout: ViewLayout | null;
|
|
6450
6564
|
unknown: string | null;
|
|
@@ -6584,7 +6698,7 @@ declare function EntityTablePage(props: EntityTablePageProps): react.JSX.Element
|
|
|
6584
6698
|
|
|
6585
6699
|
type TablePageSource = {
|
|
6586
6700
|
kind: "table";
|
|
6587
|
-
id: Uuid
|
|
6701
|
+
id: Uuid;
|
|
6588
6702
|
} | {
|
|
6589
6703
|
kind: "entity";
|
|
6590
6704
|
token: string;
|
|
@@ -6615,7 +6729,7 @@ declare function InTableToolbar({ children }: {
|
|
|
6615
6729
|
}): react.JSX.Element | null;
|
|
6616
6730
|
|
|
6617
6731
|
/** What the roster can tell us about a user id. `null` when it cannot. */
|
|
6618
|
-
type ResolveName = (userId: Uuid
|
|
6732
|
+
type ResolveName = (userId: Uuid) => string | null;
|
|
6619
6733
|
/** The honest stand-in when nobody and nothing can put a name to the author. */
|
|
6620
6734
|
declare const SOMEBODY = "somebody in this organization";
|
|
6621
6735
|
/** The platform's own word for itself. Never "null", never "system_user". */
|
|
@@ -6649,18 +6763,18 @@ interface WhoChanged {
|
|
|
6649
6763
|
* asking its question, exactly as before, and nothing throws.
|
|
6650
6764
|
*/
|
|
6651
6765
|
declare function WhoChangedSource({ tableId, labelOf, children, }: {
|
|
6652
|
-
tableId: Uuid
|
|
6766
|
+
tableId: Uuid;
|
|
6653
6767
|
/** The Field's own label, so the sentence reads "Primary diagnosis" and not `primary_diagnosis`. */
|
|
6654
6768
|
labelOf: (fieldKey: string) => string;
|
|
6655
6769
|
children: ReactNode;
|
|
6656
6770
|
}): react.JSX.Element;
|
|
6657
6771
|
/** What this cell can say about who last changed it. */
|
|
6658
|
-
declare function useWhoChanged(fieldKey: string, recordId: Uuid
|
|
6772
|
+
declare function useWhoChanged(fieldKey: string, recordId: Uuid): WhoChanged;
|
|
6659
6773
|
|
|
6660
6774
|
interface ShareControlProps {
|
|
6661
6775
|
kind: ShareSubject["kind"];
|
|
6662
|
-
organizationId: Uuid
|
|
6663
|
-
subjectId: Uuid
|
|
6776
|
+
organizationId: Uuid;
|
|
6777
|
+
subjectId: Uuid;
|
|
6664
6778
|
/** What to call it in the dialog's title. */
|
|
6665
6779
|
name?: string | undefined;
|
|
6666
6780
|
/**
|
|
@@ -6780,7 +6894,7 @@ declare function WithheldValue({ field, notice }: {
|
|
|
6780
6894
|
}): react.JSX.Element;
|
|
6781
6895
|
|
|
6782
6896
|
interface PipelineBoardProps {
|
|
6783
|
-
tableId: Uuid;
|
|
6897
|
+
tableId: Uuid$1;
|
|
6784
6898
|
/** The rows the view holds — the SAME rows every other layout of this view draws. */
|
|
6785
6899
|
rows: ReadRow$1[];
|
|
6786
6900
|
/**
|
|
@@ -6797,7 +6911,7 @@ interface PipelineBoardProps {
|
|
|
6797
6911
|
*/
|
|
6798
6912
|
filter?: StoreFilter | null | undefined;
|
|
6799
6913
|
onMeasureChange?: ((key: string | null) => void) | undefined;
|
|
6800
|
-
onOpenRecord?: ((recordId: Uuid) => void) | undefined;
|
|
6914
|
+
onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
|
|
6801
6915
|
/** Called after a move lands, so the host re-reads the rows it owns. */
|
|
6802
6916
|
onMoved?: (() => void) | undefined;
|
|
6803
6917
|
/** A card's menu copied or archived a record: the host re-reads the rows it owns. */
|
|
@@ -6891,8 +7005,8 @@ declare function ObjectActionGlyph({ name, ...props }: {
|
|
|
6891
7005
|
|
|
6892
7006
|
/** What the list needs to know about the record. */
|
|
6893
7007
|
interface RecordActionSubject {
|
|
6894
|
-
id: Uuid
|
|
6895
|
-
tableId: Uuid
|
|
7008
|
+
id: Uuid;
|
|
7009
|
+
tableId: Uuid;
|
|
6896
7010
|
/** The record's name as every card reads it (`recordNameIn` / `cardWords`). */
|
|
6897
7011
|
name: string;
|
|
6898
7012
|
}
|
|
@@ -6937,9 +7051,9 @@ declare function recordLink(tableId: string, recordId: string, origin?: string):
|
|
|
6937
7051
|
declare function recordActions(input: RecordActionsInput): ObjectAction[];
|
|
6938
7052
|
|
|
6939
7053
|
interface RecordActionHostArgs {
|
|
6940
|
-
tableId: Uuid;
|
|
7054
|
+
tableId: Uuid$1;
|
|
6941
7055
|
row: ReadRow$1;
|
|
6942
|
-
onOpenRecord?: ((recordId: Uuid) => void) | undefined;
|
|
7056
|
+
onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
|
|
6943
7057
|
/** Re-read the surface after a copy or an archive. */
|
|
6944
7058
|
onChanged?: (() => void) | undefined;
|
|
6945
7059
|
/** Open the merge dialog for this record (`MergeRecordDialog`). Absent: Merge says why. */
|
|
@@ -6969,8 +7083,8 @@ interface ViewActionHost {
|
|
|
6969
7083
|
declare function viewActions(whyNot: string | null, host: ViewActionHost): ObjectAction[];
|
|
6970
7084
|
|
|
6971
7085
|
interface RecordPanelProps {
|
|
6972
|
-
tableId: Uuid;
|
|
6973
|
-
recordId: Uuid;
|
|
7086
|
+
tableId: Uuid$1;
|
|
7087
|
+
recordId: Uuid$1;
|
|
6974
7088
|
/** Put the record away (the rail's close). Absent on a page of its own. */
|
|
6975
7089
|
onClose?: (() => void) | undefined;
|
|
6976
7090
|
/**
|
|
@@ -6994,8 +7108,8 @@ declare const BODY_COLUMN_NAME = "Notes";
|
|
|
6994
7108
|
/** How long a pause in typing is before the body is written. */
|
|
6995
7109
|
declare const BODY_SAVE_PAUSE_MS = 900;
|
|
6996
7110
|
declare function RecordBody({ tableId, recordId, className }: {
|
|
6997
|
-
tableId: Uuid;
|
|
6998
|
-
recordId: Uuid;
|
|
7111
|
+
tableId: Uuid$1;
|
|
7112
|
+
recordId: Uuid$1;
|
|
6999
7113
|
className?: string | undefined;
|
|
7000
7114
|
}): react.JSX.Element;
|
|
7001
7115
|
|
|
@@ -7068,7 +7182,7 @@ declare function copyNameFor(name: string): string;
|
|
|
7068
7182
|
/** One line of progress, in a person's words. */
|
|
7069
7183
|
declare function duplicateProgressWords(p: TableDuplicateProgress): string;
|
|
7070
7184
|
interface TableDuplicateDialogProps {
|
|
7071
|
-
tableId: Uuid
|
|
7185
|
+
tableId: Uuid;
|
|
7072
7186
|
name: string;
|
|
7073
7187
|
open: boolean;
|
|
7074
7188
|
onOpenChange: (open: boolean) => void;
|
|
@@ -7078,7 +7192,7 @@ interface TableDuplicateDialogProps {
|
|
|
7078
7192
|
declare function TableDuplicateDialog({ tableId, name, open, onOpenChange, onDuplicated }: TableDuplicateDialogProps): react.JSX.Element;
|
|
7079
7193
|
|
|
7080
7194
|
/** The two references a table gives, in the words a person reads. Pure. */
|
|
7081
|
-
declare function tableReferenceChoices(tableId: Uuid
|
|
7195
|
+
declare function tableReferenceChoices(tableId: Uuid, name: string): Array<{
|
|
7082
7196
|
id: string;
|
|
7083
7197
|
label: string;
|
|
7084
7198
|
reference: ContentTransferReference;
|
|
@@ -7089,29 +7203,13 @@ declare function TableReferenceDialog({ table, open, onOpenChange, }: {
|
|
|
7089
7203
|
onOpenChange: (open: boolean) => void;
|
|
7090
7204
|
}): react.JSX.Element;
|
|
7091
7205
|
|
|
7092
|
-
/** The columns a record may be named by, in the table's order. Pure. */
|
|
7093
|
-
declare function rowLabelChoices(fields: readonly Field$1[]): Array<{
|
|
7094
|
-
value: string;
|
|
7095
|
-
label: string;
|
|
7096
|
-
}>;
|
|
7097
|
-
/** The patch that keeps a description: the table's other metadata is carried, never dropped. Pure. */
|
|
7098
|
-
declare function descriptionPatch(table: Pick<Table$1, "metadata">, text: string): {
|
|
7099
|
-
metadata: Record<string, unknown>;
|
|
7100
|
-
};
|
|
7101
|
-
declare function TableDetails({ tableId, table, fields, onSaved, }: {
|
|
7102
|
-
tableId: Uuid;
|
|
7103
|
-
table: Table$1;
|
|
7104
|
-
fields: readonly Field$1[];
|
|
7105
|
-
onSaved?: (() => void) | undefined;
|
|
7106
|
-
}): react.JSX.Element;
|
|
7107
|
-
|
|
7108
7206
|
/** What a "the app's code depends on this table" refusal names, or null for any other refusal. */
|
|
7109
7207
|
declare function codeDependsRefusal(error: RecordsError | null | undefined): {
|
|
7110
7208
|
slug: string;
|
|
7111
7209
|
declaredIn: string | null;
|
|
7112
7210
|
} | null;
|
|
7113
7211
|
interface ArchiveDeliberatelyDialogProps {
|
|
7114
|
-
tableId: Uuid
|
|
7212
|
+
tableId: Uuid;
|
|
7115
7213
|
name: string;
|
|
7116
7214
|
slug: string;
|
|
7117
7215
|
declaredIn: string | null;
|
|
@@ -7196,4 +7294,4 @@ declare function RecordsSkeleton({ layout, embedded, rows, className }: RecordsS
|
|
|
7196
7294
|
*/
|
|
7197
7295
|
declare function TablePageSkeleton({ layout: layoutAsked, embedded, rows, tableId, className, }: RecordsSkeletonProps): react.JSX.Element;
|
|
7198
7296
|
|
|
7199
|
-
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 };
|