@ai-matrx/records-ui 0.93.146 → 0.95.2
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 +142 -0
- package/dist/index.cjs +22160 -17446
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +555 -61
- package/dist/index.d.ts +555 -61
- package/dist/index.js +12610 -7849
- package/dist/index.js.map +1 -1
- package/dist/object-actions.cjs +34 -1
- package/dist/object-actions.cjs.map +1 -1
- package/dist/object-actions.d.cts +1 -1
- package/dist/object-actions.d.ts +1 -1
- package/dist/object-actions.js +34 -1
- package/dist/object-actions.js.map +1 -1
- package/dist/{objectActions-Dgdr0E4b.d.cts → objectActions-DozKWxks.d.cts} +27 -1
- package/dist/{objectActions-Dgdr0E4b.d.ts → objectActions-DozKWxks.d.ts} +27 -1
- package/dist/pickers.cjs +826 -593
- package/dist/pickers.cjs.map +1 -1
- package/dist/pickers.d.cts +4 -1
- package/dist/pickers.d.ts +4 -1
- package/dist/pickers.js +714 -479
- package/dist/pickers.js.map +1 -1
- package/package.json +4 -4
package/dist/index.d.cts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
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 { RecordScopeContext, EnrichCell, RecordsError, Field, TableDecorations, Uuid as Uuid$1, RowAction, RecordDocument, Table, ReadRow, StoreFilter, PermissionLevel, AggregateFilter, RelationDisplay, WriteConflict, RecordsErrorCode, RecordFilter, RuleExpression, RecordsResult, SavedViewRow, 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, MySubscription, DashboardBlockKind, AggregateBucket, AggregateMeasure, AggregateCompare, DashboardTarget, DashboardBlock, DashboardSummary, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, HistoryActor, FieldHistoryEntry, DrillDefinition, DrillSource } from '@ai-matrx/records';
|
|
4
|
+
import { RecordScopeContext, EnrichCell, RecordsError, Field, TableDecorations, Uuid as Uuid$1, RowAction, RecordDocument, Table, ReadRow, StoreFilter, PermissionLevel, AggregateFilter, RelationDisplay, WriteConflict, RecordsErrorCode, RecordFilter, RuleExpression, RecordsResult, SavedViewRow, 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, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, HistoryActor, FieldHistoryEntry, DrillDefinition, DrillSource } from '@ai-matrx/records';
|
|
5
5
|
import { ReversibleAnnouncement } from '@ai-matrx/kit/reversible';
|
|
6
|
-
import { W as WhatYouMayDo, T as TableActionHost, O as ObjectAction, a as ObjectActionIcon } from './objectActions-
|
|
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-
|
|
6
|
+
import { W as WhatYouMayDo, T as TableActionHost, O as ObjectAction, a as ObjectActionIcon } from './objectActions-DozKWxks.cjs';
|
|
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-DozKWxks.cjs';
|
|
8
8
|
import { Uuid, 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, MatrxDrillDimension, MatrxDrillMeasure, MatrxDrillFilter, MatrxDrillQuestion, MatrxDataTableDrillConfig, MatrxDrillAnswers } from '@ai-matrx/design-system/data-table';
|
|
10
10
|
import { FieldFormatConfig } from '@ai-matrx/design-system/field-formats';
|
|
@@ -781,6 +781,15 @@ interface RecordsUiHost {
|
|
|
781
781
|
* nowhere.
|
|
782
782
|
*/
|
|
783
783
|
chat?: (context: RecordChatContext) => ReactNode;
|
|
784
|
+
/**
|
|
785
|
+
* OPTIONAL. MORE SECTIONS ON AN OPEN RECORD — drawn in the record rail after its history,
|
|
786
|
+
* one host-owned block about THIS record (e.g. "What ran on this record": the Workflow runs
|
|
787
|
+
* stamped with it). Unbound, nothing is drawn.
|
|
788
|
+
*/
|
|
789
|
+
recordSections?: (target: {
|
|
790
|
+
tableId: Uuid$1;
|
|
791
|
+
recordId: Uuid$1;
|
|
792
|
+
}) => ReactNode;
|
|
784
793
|
/**
|
|
785
794
|
* OPTIONAL. "TALK TO THIS RECORD" — the HOST opens its own one chat surface
|
|
786
795
|
* (AGT-N-9, PRODUCTS row 11).
|
|
@@ -890,6 +899,17 @@ interface RecordsUiHost {
|
|
|
890
899
|
* nothing is the dead control this package does not ship.
|
|
891
900
|
*/
|
|
892
901
|
openRecords?: (ask: OpenRecordsAsk) => void;
|
|
902
|
+
/**
|
|
903
|
+
* OPTIONAL. WHERE A PAGE OPENS (v6 lane 11, wave D). A Page is a dashboard record whose
|
|
904
|
+
* `presentation.kind` is `"page"` (`pages.ts`); the host owns its route, so this hands back the
|
|
905
|
+
* address of an existing page, or of the screen that makes a new one on a Table. Unbound, the
|
|
906
|
+
* Dashboards area lists no pages and offers no "New page" — absent, never dead.
|
|
907
|
+
*/
|
|
908
|
+
pageHref?: (target: {
|
|
909
|
+
pageId: Uuid$1;
|
|
910
|
+
} | {
|
|
911
|
+
newOnTable: Uuid$1;
|
|
912
|
+
}) => string;
|
|
893
913
|
/**
|
|
894
914
|
* OPTIONAL. ASK THE AGENT TO CHANGE THIS DASHBOARD (SCR-16).
|
|
895
915
|
*
|
|
@@ -1300,6 +1320,22 @@ declare function personRecordForMember(client: RecordsClient, personTableId: Uui
|
|
|
1300
1320
|
}>;
|
|
1301
1321
|
declare function PersonPicker({ field, value, onChange, disabled, id, className, autoOpen, onClose, initialSearch }: PersonPickerProps): react.JSX.Element;
|
|
1302
1322
|
|
|
1323
|
+
interface RecordVersions {
|
|
1324
|
+
/** The version the person saw this record at; waits for the read of freshly drawn rows. `null` = unread. */
|
|
1325
|
+
seen: (id: Uuid$1) => Promise<number | null>;
|
|
1326
|
+
/** The same, for many records at once. */
|
|
1327
|
+
seenMany: (ids: readonly Uuid$1[]) => Promise<Map<Uuid$1, number | null>>;
|
|
1328
|
+
/** A write this screen made moved the record on (a version only goes up). */
|
|
1329
|
+
wrote: (id: Uuid$1, version: number) => void;
|
|
1330
|
+
/**
|
|
1331
|
+
* Read these records' versions again now: the person pressed Reload, or the store refused a write
|
|
1332
|
+
* because somebody else won (`PT409`) — the rows are re-read too, so the next write is against what
|
|
1333
|
+
* the person then sees. A change that moved only the version (who sees the row) never re-reads by
|
|
1334
|
+
* content, so without this the row stayed refused until the screen was opened again (verifier V10).
|
|
1335
|
+
*/
|
|
1336
|
+
refresh: (ids: readonly Uuid$1[]) => void;
|
|
1337
|
+
}
|
|
1338
|
+
|
|
1303
1339
|
/** Which cell is open. A grid opens exactly one at a time, like every other grid. */
|
|
1304
1340
|
interface CellAddress {
|
|
1305
1341
|
rowId: Uuid$1;
|
|
@@ -1424,6 +1460,11 @@ interface Options {
|
|
|
1424
1460
|
* A CELL THE STORE ACCEPTED, with what it held before and what it holds now (merge tranche 6d):
|
|
1425
1461
|
* the merged grid's undo pushes one step per accepted cell. Unbound, nothing is told.
|
|
1426
1462
|
*/
|
|
1463
|
+
/**
|
|
1464
|
+
* The grid's one versions-at-load source (`useRecordVersions`), shared with its paste, fill, bulk and
|
|
1465
|
+
* undo. Unbound, the session keeps its own over `rows`.
|
|
1466
|
+
*/
|
|
1467
|
+
versions?: RecordVersions | undefined;
|
|
1427
1468
|
/** One cell the store took: its value before and after, and the record version that write made. */
|
|
1428
1469
|
onWritten?: ((write: {
|
|
1429
1470
|
rowId: Uuid$1;
|
|
@@ -1443,7 +1484,7 @@ interface Options {
|
|
|
1443
1484
|
}
|
|
1444
1485
|
/** How an open cell was closed: a key (Enter, Tab, Escape), the picker's own close, or a blur. */
|
|
1445
1486
|
type EditVia = "key" | "pick" | "blur";
|
|
1446
|
-
declare function useGridEditing({ tableId, fields, rows, reload, canWrite, mayWriteRow, onWritten, onEnded }: Options): GridEditing;
|
|
1487
|
+
declare function useGridEditing({ tableId, fields, rows, reload, canWrite, mayWriteRow, onWritten, onEnded, versions: shared }: Options): GridEditing;
|
|
1447
1488
|
/**
|
|
1448
1489
|
* ONE CELL. Read, until somebody asks to change it; then the Field's own
|
|
1449
1490
|
* editor, in place, with the keys a person expects from a grid.
|
|
@@ -1595,7 +1636,7 @@ interface ViewSortKey {
|
|
|
1595
1636
|
* sub-groups and shut sections, hidden fields, gallery size, summaries).
|
|
1596
1637
|
*/
|
|
1597
1638
|
interface ViewSettings {
|
|
1598
|
-
layout: "grid" | "kanban" | "calendar" | "gallery";
|
|
1639
|
+
layout: "grid" | "kanban" | "calendar" | "gallery" | "timeline";
|
|
1599
1640
|
filters: RecordFilter | null;
|
|
1600
1641
|
where: RuleExpression | null;
|
|
1601
1642
|
groupField: string | null;
|
|
@@ -2077,6 +2118,12 @@ interface GridProps {
|
|
|
2077
2118
|
* with the arrows), so the panel always shows the row the person is on.
|
|
2078
2119
|
*/
|
|
2079
2120
|
openRecordId?: Uuid | null | undefined;
|
|
2121
|
+
/**
|
|
2122
|
+
* CLOSE THE RECORD PANEL (grids review 3, lane H item 5): Escape on the grid, and Space on the row
|
|
2123
|
+
* that is already open, put it away — Airtable's expanded record toggles the same way. Unbound,
|
|
2124
|
+
* Space only opens.
|
|
2125
|
+
*/
|
|
2126
|
+
onCloseRecord?: (() => void) | undefined;
|
|
2080
2127
|
/** SCR-2. Called when an admin clicks the "+" at the end of the headers. */
|
|
2081
2128
|
onAddField?: (() => void) | undefined;
|
|
2082
2129
|
/**
|
|
@@ -2417,7 +2464,7 @@ interface CustomFieldsAgentDoor {
|
|
|
2417
2464
|
addField: (request: CustomFieldAddRequest) => Promise<CustomFieldAddResult>;
|
|
2418
2465
|
/** Every problem with a values request, all at once, or `[]`. Nothing is written. */
|
|
2419
2466
|
checkValues: (values: CustomFieldValuesRequest) => string[];
|
|
2420
|
-
/** Writes this record's values in ONE `custom.
|
|
2467
|
+
/** Writes this record's values in ONE `custom.entity_row_write` (a key left out is left alone). */
|
|
2421
2468
|
setValues: (values: CustomFieldValuesRequest) => Promise<CustomFieldSetResult>;
|
|
2422
2469
|
}
|
|
2423
2470
|
/**
|
|
@@ -2428,8 +2475,9 @@ interface CustomFieldsAgentDoor {
|
|
|
2428
2475
|
* not get a Choice, a Yes / no or a link to another record, and none of the column's governance —
|
|
2429
2476
|
* while `custom.entity_field_declare` resolves its spec through the very `custom._field_document_for`
|
|
2430
2477
|
* a custom table's column goes through. A standard table and a custom table are one primitive, so
|
|
2431
|
-
* the record page opens the table's own `FieldEditor` and offers `fieldTypes.ts`'s pickable set
|
|
2432
|
-
*
|
|
2478
|
+
* the record page opens the table's own `FieldEditor` and offers `fieldTypes.ts`'s pickable set
|
|
2479
|
+
* less the kinds that cannot hold a value on a standard row (`STANDARD_TABLE_FIELD_CHOICES`, read
|
|
2480
|
+
* from the store's kind registry). `a-record-page-adds-a-field-with-the-tables-own-palette.test.tsx`
|
|
2433
2481
|
* fails the moment this list and that set differ.
|
|
2434
2482
|
*/
|
|
2435
2483
|
declare const ADDABLE_TYPES: {
|
|
@@ -2481,7 +2529,16 @@ type RelationFieldType = "relation";
|
|
|
2481
2529
|
* `FIELD_TYPE_CHOICES`'s coverage and as a red `kindsWithNoChoice()` below — never as a
|
|
2482
2530
|
* silence.
|
|
2483
2531
|
*/
|
|
2484
|
-
type PickableFieldType = DeclarableFieldKind | SystemFieldKind | "entity_reference" | NewerFieldKind;
|
|
2532
|
+
type PickableFieldType = DeclarableFieldKind | SystemFieldKind | "entity_reference" | NewerFieldKind | LookFieldKind;
|
|
2533
|
+
/**
|
|
2534
|
+
* A KIND THAT IS A PLAIN COLUMN WEARING A LOOK (grids review 3, lane H item 5). The store keeps a
|
|
2535
|
+
* column's "Shows as" on the Field (`display_format`, `custom.display_format_ids()` has `rating` and
|
|
2536
|
+
* `time`), so a Rating is a whole number shown as stars and a Time is a time of day kept as its
|
|
2537
|
+
* 24-hour text — declared through the ordinary door (`{ plain, display_format }`) the same way the
|
|
2538
|
+
* "Shows as" picker makes one. Offered whenever the store does not yet publish the kind as its own
|
|
2539
|
+
* word (`custom.field_kinds()`): a Rating the store publishes goes as `{ type: "rating", max }`.
|
|
2540
|
+
*/
|
|
2541
|
+
type LookFieldKind = "time";
|
|
2485
2542
|
/**
|
|
2486
2543
|
* LANE 10 P4: THE NINE NEWER KINDS (rating, duration, created by, last changed by, status, address,
|
|
2487
2544
|
* barcode, formatted text, count). Each is listed in `FIELD_TYPE_CATALOGUE` below, so every reader
|
|
@@ -2624,6 +2681,8 @@ declare function whatIsMissing(state: {
|
|
|
2624
2681
|
relationTarget?: string;
|
|
2625
2682
|
/** Only an entity-reference column asks for these (SC-R). */
|
|
2626
2683
|
allowedTypes?: readonly string[];
|
|
2684
|
+
/** What the thing being made is called where it is made: a table's "column", a record page's "field". */
|
|
2685
|
+
noun?: "column" | "field";
|
|
2627
2686
|
}): string | null;
|
|
2628
2687
|
|
|
2629
2688
|
declare const NO_RULES_YET = "Nothing has to be true to get here yet.";
|
|
@@ -2793,13 +2852,24 @@ interface TableSettingsProps {
|
|
|
2793
2852
|
}
|
|
2794
2853
|
declare function TableSettings({ tableId, proposals, onAcceptProposal, onRejectProposal, onDeleted, archiveAsked, className, }: TableSettingsProps): react.JSX.Element;
|
|
2795
2854
|
|
|
2855
|
+
/** Whether a Table document marks the table as Foundation. Absent is no — the store's own rule. */
|
|
2856
|
+
declare function isFoundationTable(table: Pick<Table, "foundation"> | {
|
|
2857
|
+
foundation?: unknown;
|
|
2858
|
+
} | null | undefined): boolean;
|
|
2859
|
+
declare function TableFoundationSwitch({ tableId, table }: {
|
|
2860
|
+
tableId: Uuid$1;
|
|
2861
|
+
table: Table;
|
|
2862
|
+
}): react.JSX.Element;
|
|
2863
|
+
|
|
2796
2864
|
interface PeekProps {
|
|
2797
2865
|
tableId: Uuid;
|
|
2798
2866
|
recordId: Uuid;
|
|
2799
2867
|
onClose?: (() => void) | undefined;
|
|
2800
2868
|
className?: string | undefined;
|
|
2869
|
+
/** Drawn ON the record's own page: no "Open" link to the page it is already on. */
|
|
2870
|
+
onPage?: boolean | undefined;
|
|
2801
2871
|
}
|
|
2802
|
-
declare function Peek({ tableId, recordId, onClose, className }: PeekProps): react.JSX.Element;
|
|
2872
|
+
declare function Peek({ tableId, recordId, onClose, className, onPage }: PeekProps): react.JSX.Element;
|
|
2803
2873
|
|
|
2804
2874
|
interface RecordFormProps {
|
|
2805
2875
|
tableId: Uuid;
|
|
@@ -2810,8 +2880,13 @@ interface RecordFormProps {
|
|
|
2810
2880
|
onSaved?: ((recordId: Uuid) => void) | undefined;
|
|
2811
2881
|
onCancel?: (() => void) | undefined;
|
|
2812
2882
|
className?: string | undefined;
|
|
2883
|
+
/**
|
|
2884
|
+
* A NEW record's starting values (create only; an edit starts from the stored record). How a
|
|
2885
|
+
* linked table's "+" opens this form with the link already made (VIEWS-AND-FIELDS BL).
|
|
2886
|
+
*/
|
|
2887
|
+
initial?: Record<string, unknown> | undefined;
|
|
2813
2888
|
}
|
|
2814
|
-
declare function RecordForm({ tableId, recordId, recordType, onSaved, onCancel, className, }: RecordFormProps): react.JSX.Element;
|
|
2889
|
+
declare function RecordForm({ tableId, recordId, recordType, onSaved, onCancel, className, initial, }: RecordFormProps): react.JSX.Element;
|
|
2815
2890
|
|
|
2816
2891
|
interface RelationPickerProps {
|
|
2817
2892
|
field: Field;
|
|
@@ -3102,10 +3177,16 @@ declare function ProvenanceBadge({ document, fieldKey }: {
|
|
|
3102
3177
|
* export, a chat line) keeps calling `renderValue` with no resolver and says
|
|
3103
3178
|
* "Loading…" rather than printing an id.
|
|
3104
3179
|
*/
|
|
3105
|
-
declare function RecordValue({ field, value, document, format, withheld, inCell, }: {
|
|
3180
|
+
declare function RecordValue({ field, value, document, format, withheld, inCell, recordId, }: {
|
|
3106
3181
|
field: Field;
|
|
3107
3182
|
value: unknown;
|
|
3108
3183
|
document?: RecordDocument | undefined;
|
|
3184
|
+
/**
|
|
3185
|
+
* WHOSE VALUE THIS IS. A drawn signature a form sent is kept as a File the value's source names,
|
|
3186
|
+
* and the read doors give the value without its source — so the signature reader asks for it by
|
|
3187
|
+
* the record (`signature.tsx`). Every other kind ignores it.
|
|
3188
|
+
*/
|
|
3189
|
+
recordId?: string | null | undefined;
|
|
3109
3190
|
/**
|
|
3110
3191
|
* The column's DECLARED format (`presentation.ts`), when it has one.
|
|
3111
3192
|
*
|
|
@@ -3260,10 +3341,25 @@ declare function drawnSignatureOf(value: unknown): string | null;
|
|
|
3260
3341
|
declare const SIGNED_WORD = "Signed";
|
|
3261
3342
|
/** A signature value in words: a drawing is "Signed"; a sealed name stays the name. */
|
|
3262
3343
|
declare function signatureWords(value: unknown): string | null;
|
|
3263
|
-
/**
|
|
3264
|
-
declare function
|
|
3344
|
+
/** The File a signature value's source names (`custom.form_submit`, `custom.sign_request_sign`). */
|
|
3345
|
+
declare function signatureFileOf(source: unknown): string | null;
|
|
3346
|
+
/**
|
|
3347
|
+
* The File a stored document's envelope names for one key, when the document carries its envelope
|
|
3348
|
+
* (`_values.<key>.src`, inline or a pointer into `_sources`). The read doors strip both, so a
|
|
3349
|
+
* screen usually has to ask (`SignatureDrawing`); a document that has them is answered here.
|
|
3350
|
+
*/
|
|
3351
|
+
declare function signatureFileIn(document: RecordDocument | null | undefined, key: string): string | null;
|
|
3352
|
+
/**
|
|
3353
|
+
* A signature as it reads anywhere a value is shown: the drawing, or the signer's name. A drawing
|
|
3354
|
+
* kept as a File (a form's, `custom.form_submit`) needs to know whose value this is: `recordId` and
|
|
3355
|
+
* `fieldKey`, or the `document` when it carries its envelope.
|
|
3356
|
+
*/
|
|
3357
|
+
declare function SignatureValue({ value, inCell, recordId, fieldKey, document, }: {
|
|
3265
3358
|
value: unknown;
|
|
3266
3359
|
inCell?: boolean | undefined;
|
|
3360
|
+
recordId?: string | null | undefined;
|
|
3361
|
+
fieldKey?: string | null | undefined;
|
|
3362
|
+
document?: RecordDocument | null | undefined;
|
|
3267
3363
|
}): react.JSX.Element;
|
|
3268
3364
|
/**
|
|
3269
3365
|
* THE ONE SIGNATURE PAD. Draw with a finger, a pen or a mouse; Clear starts again. `onChange`
|
|
@@ -3327,6 +3423,7 @@ declare function tablePickerEntries<T extends PickerTable>(tables: readonly T[],
|
|
|
3327
3423
|
declare function usePickerTables(): {
|
|
3328
3424
|
loading: boolean;
|
|
3329
3425
|
data: Array<Table & PickerTable>;
|
|
3426
|
+
reload: () => void;
|
|
3330
3427
|
};
|
|
3331
3428
|
/** The "Show lists" control beside a table picker. Drawn only when there are lists to show. */
|
|
3332
3429
|
declare function ShowListsToggle({ count, on, onChange, className, }: {
|
|
@@ -3411,7 +3508,7 @@ declare function archiveConfirmSentence(what: string): string;
|
|
|
3411
3508
|
|
|
3412
3509
|
interface AnnounceTableArchived {
|
|
3413
3510
|
notify: RecordsUiHost["notify"];
|
|
3414
|
-
client: Pick<RecordsClient, "
|
|
3511
|
+
client: Pick<RecordsClient, "tableRestoreWhole">;
|
|
3415
3512
|
tableId: Uuid$1;
|
|
3416
3513
|
/** The table's name as the store gave it. */
|
|
3417
3514
|
name: string;
|
|
@@ -3466,6 +3563,9 @@ declare const LOOK_WORDS: {
|
|
|
3466
3563
|
readonly newName: "Name for the new view";
|
|
3467
3564
|
};
|
|
3468
3565
|
|
|
3566
|
+
/** The far table's Fields, by table id — what a lookup's picked column is judged against. */
|
|
3567
|
+
type FarFields = ReadonlyMap<string, readonly Field[]>;
|
|
3568
|
+
|
|
3469
3569
|
interface ViewSwitcherProps {
|
|
3470
3570
|
/**
|
|
3471
3571
|
* THE DECLARATIVE SPEC — an agent writes the whole thing, a person tweaks it.
|
|
@@ -3486,6 +3586,8 @@ interface ViewSwitcherProps {
|
|
|
3486
3586
|
onOpenRecord?: ((recordId: Uuid) => void) | undefined;
|
|
3487
3587
|
/** The record the host has open beside a grid, which the grid's panel then follows (`Grid.openRecordId`). */
|
|
3488
3588
|
openRecordId?: Uuid | null | undefined;
|
|
3589
|
+
/** Put the record panel away (Escape, or Space on the open row): `Grid.onCloseRecord`. */
|
|
3590
|
+
onCloseRecord?: (() => void) | undefined;
|
|
3489
3591
|
/**
|
|
3490
3592
|
* Called after a card moves between columns, so the host re-reads the rows it owns. A
|
|
3491
3593
|
* board that moved a card and left the row list alone would show the card in two places
|
|
@@ -3562,6 +3664,8 @@ declare function useViewRecords(view: SavedViewSpec, pageSize?: number, filter?:
|
|
|
3562
3664
|
total: number | null;
|
|
3563
3665
|
/** Show one more page of them. */
|
|
3564
3666
|
loadMore: () => void;
|
|
3667
|
+
/** Read them again — a card's menu copied or archived one. */
|
|
3668
|
+
reload: () => void;
|
|
3565
3669
|
pageSize: number;
|
|
3566
3670
|
loading: boolean;
|
|
3567
3671
|
error: RecordsError | null;
|
|
@@ -3579,7 +3683,7 @@ declare function useViewRecords(view: SavedViewSpec, pageSize?: number, filter?:
|
|
|
3579
3683
|
*/
|
|
3580
3684
|
membership: string;
|
|
3581
3685
|
};
|
|
3582
|
-
declare function ViewSwitcher({ view, onLayoutChange, onViewChange, onOpenRecord, openRecordId, onMoved, onNewRecordForm, onAskWhoChanged, pageSize, titleField, filter, onClearFilter, hostLayout, onHostLayoutChange, chooser, openExport, viewId, onOrderPlaced, footer, className, }: ViewSwitcherProps): react.JSX.Element;
|
|
3686
|
+
declare function ViewSwitcher({ view, onLayoutChange, onViewChange, onOpenRecord, openRecordId, onCloseRecord, onMoved, onNewRecordForm, onAskWhoChanged, pageSize, titleField, filter, onClearFilter, hostLayout, onHostLayoutChange, chooser, openExport, viewId, onOrderPlaced, footer, className, }: ViewSwitcherProps): react.JSX.Element;
|
|
3583
3687
|
|
|
3584
3688
|
type CalendarMode = "month" | "week" | "day" | "list";
|
|
3585
3689
|
interface CalendarViewProps {
|
|
@@ -3590,6 +3694,8 @@ interface CalendarViewProps {
|
|
|
3590
3694
|
dateField: Field$1;
|
|
3591
3695
|
/** The table's columns, for the End and Colour by pickers and the default colour. */
|
|
3592
3696
|
fields?: readonly Field$1[] | undefined;
|
|
3697
|
+
/** The far tables' columns, so a lookup of one date is offered as an End (`useFarFields`). */
|
|
3698
|
+
farFields?: FarFields | undefined;
|
|
3593
3699
|
/**
|
|
3594
3700
|
* THE END COLUMN THE VIEW KEEPS (`end_field`). Left out or null: the table's ONE other date column
|
|
3595
3701
|
* when it has exactly one, else none until the person picks.
|
|
@@ -3637,7 +3743,7 @@ declare function packOverlaps<T extends {
|
|
|
3637
3743
|
col: number;
|
|
3638
3744
|
cols: number;
|
|
3639
3745
|
}>;
|
|
3640
|
-
declare function CalendarView({ tableId, rows, dateField, fields, endKey, onEndFieldChange, endKept, titleField, onOpenRecord, onMoved, onColorFieldChange, canCreate, note, style, defaultMinutes, snapMinutes, initialDate, initialMode, className, }: CalendarViewProps): react.JSX.Element;
|
|
3746
|
+
declare function CalendarView({ tableId, rows, dateField, fields, farFields, endKey, onEndFieldChange, endKept, titleField, onOpenRecord, onMoved, onColorFieldChange, canCreate, note, style, defaultMinutes, snapMinutes, initialDate, initialMode, className, }: CalendarViewProps): react.JSX.Element;
|
|
3641
3747
|
|
|
3642
3748
|
type TimelineZoom = "day" | "week" | "month" | "quarter";
|
|
3643
3749
|
declare const TIMELINE_ZOOMS: readonly TimelineZoom[];
|
|
@@ -3654,6 +3760,8 @@ interface TimelineViewProps {
|
|
|
3654
3760
|
rows: readonly ReadRow$1[];
|
|
3655
3761
|
/** The table's columns: the pickers, the lanes and the colours read them. */
|
|
3656
3762
|
fields: readonly Field$1[];
|
|
3763
|
+
/** The far tables' columns, so a lookup of one date is offered as a Start or End (`useFarFields`). */
|
|
3764
|
+
farFields?: FarFields | undefined;
|
|
3657
3765
|
/** The column that names each bar (`cardTitleField`). */
|
|
3658
3766
|
titleField: Field$1 | undefined;
|
|
3659
3767
|
/** The view's Start column (`date_field`). Left out: the table's one date column, else asked. */
|
|
@@ -3684,7 +3792,7 @@ interface TimelineViewProps {
|
|
|
3684
3792
|
declare function onlyCandidate(candidates: readonly Field$1[]): string | null;
|
|
3685
3793
|
/** The columns a timeline can lay lanes out by: a choice, a person, a link, yes / no, or a worked-out column. */
|
|
3686
3794
|
declare function groupableFields(all: readonly Field$1[]): Field$1[];
|
|
3687
|
-
declare function TimelineView({ tableId, rows, fields, titleField, startKey, endKey, groupKey, colorKey, onSettingsChange, layoutKept, onOpenRecord, onMoved, note, style, initialZoom, initialDate, className, }: TimelineViewProps): react.JSX.Element;
|
|
3795
|
+
declare function TimelineView({ tableId, rows, fields, farFields, titleField, startKey, endKey, groupKey, colorKey, onSettingsChange, layoutKept, onOpenRecord, onMoved, note, style, initialZoom, initialDate, className, }: TimelineViewProps): react.JSX.Element;
|
|
3688
3796
|
|
|
3689
3797
|
/** The colour of each record's card under `colorKey` (null: the table's own decorations only). */
|
|
3690
3798
|
declare function useRowColorBy(all: readonly Field$1[], colorKey: string | null, style?: TableStyle | undefined): (row: ReadRow$1) => StyleColor | null;
|
|
@@ -3762,7 +3870,7 @@ type MoveWritten = {
|
|
|
3762
3870
|
* means the caller does not know it — the write is then NOT sent, because a write with no version
|
|
3763
3871
|
* is a write that can overwrite a colleague (said as a refusal, never silently).
|
|
3764
3872
|
*/
|
|
3765
|
-
declare function moveRecordValue(client: Pick<ReturnType<typeof useRecordsClient>, "recordUpdate">, recordId: Uuid$1, patch: Record<string, unknown>, expectedVersion: number | null): Promise<MoveWritten>;
|
|
3873
|
+
declare function moveRecordValue(client: Pick<ReturnType<typeof useRecordsClient>, "recordUpdate" | "recordUpdateAddingChoices">, recordId: Uuid$1, patch: Record<string, unknown>, expectedVersion: number | null): Promise<MoveWritten>;
|
|
3766
3874
|
interface RecordMoves {
|
|
3767
3875
|
/**
|
|
3768
3876
|
* Move one record: `patch` is the new values by Field key, `before` the values it held (read from
|
|
@@ -3786,6 +3894,7 @@ interface RecordMoves {
|
|
|
3786
3894
|
recordId: Uuid$1;
|
|
3787
3895
|
error: RecordsError;
|
|
3788
3896
|
changedElsewhere: boolean;
|
|
3897
|
+
unread?: boolean | undefined;
|
|
3789
3898
|
} | null;
|
|
3790
3899
|
/** Say a sentence in the notice without a step (`sticky`: stays until dismissed). */
|
|
3791
3900
|
say: (says: string, sticky?: boolean) => void;
|
|
@@ -3924,6 +4033,12 @@ interface ProposedChange {
|
|
|
3924
4033
|
record?: Uuid | undefined;
|
|
3925
4034
|
/** The document for `add`, or the patch for `update`. */
|
|
3926
4035
|
data?: Record<string, unknown> | undefined;
|
|
4036
|
+
/**
|
|
4037
|
+
* The version of `record` the proposer read before proposing an `update`. Accept is written against
|
|
4038
|
+
* it, so a change somebody made since is refused, never overwritten. Left out, the version the
|
|
4039
|
+
* record held when this row was first drawn stands in (lane VW).
|
|
4040
|
+
*/
|
|
4041
|
+
version?: number | undefined;
|
|
3927
4042
|
/** What this change is, in one line a person reads. */
|
|
3928
4043
|
label: string;
|
|
3929
4044
|
/** Why the proposer asks for it. Optional, and shown when it is there. */
|
|
@@ -4290,6 +4405,52 @@ interface AccentSwatchesProps {
|
|
|
4290
4405
|
}
|
|
4291
4406
|
declare function AccentSwatches({ value, onChange, options, noneLabel }: AccentSwatchesProps): react.JSX.Element;
|
|
4292
4407
|
|
|
4408
|
+
interface PublicPicturePickerProps {
|
|
4409
|
+
/** What is being chosen ("Logo", "Cover"). It names the group for a screen reader. */
|
|
4410
|
+
label: string;
|
|
4411
|
+
/** The organization's public pictures, as the store listed them. */
|
|
4412
|
+
pictures: readonly PublicPicture[];
|
|
4413
|
+
value: Uuid$1 | "" | null | undefined;
|
|
4414
|
+
onChange: (fileId: Uuid$1 | "") => void;
|
|
4415
|
+
/** The words on the empty choice ("Organization logo", "No cover"). */
|
|
4416
|
+
noneLabel: string;
|
|
4417
|
+
className?: string | undefined;
|
|
4418
|
+
}
|
|
4419
|
+
declare function PublicPicturePicker({ label, pictures, value, onChange, noneLabel, className }: PublicPicturePickerProps): react.JSX.Element;
|
|
4420
|
+
|
|
4421
|
+
/** What the frame draws, read from the store's look. Pure. */
|
|
4422
|
+
interface FormLookView {
|
|
4423
|
+
name: string;
|
|
4424
|
+
logoUrl: string | null;
|
|
4425
|
+
coverUrl: string | null;
|
|
4426
|
+
bandClass: string | null;
|
|
4427
|
+
monogramClass: string;
|
|
4428
|
+
primaryVars: Record<string, string> | null;
|
|
4429
|
+
footerLinks: Array<{
|
|
4430
|
+
label: string;
|
|
4431
|
+
href: string;
|
|
4432
|
+
external: boolean;
|
|
4433
|
+
}>;
|
|
4434
|
+
}
|
|
4435
|
+
declare function formLookView(style: Partial<PortalStyle> | null | undefined, fallbackName: string): FormLookView;
|
|
4436
|
+
/** The logo tile: the business's picture, or its first letter on its colour. */
|
|
4437
|
+
declare function FormLookLogo({ view, size }: {
|
|
4438
|
+
view: FormLookView;
|
|
4439
|
+
size?: "sm" | "md";
|
|
4440
|
+
}): react.JSX.Element;
|
|
4441
|
+
interface FormLookFrameProps {
|
|
4442
|
+
/** The look the store resolved (`presentation.look` from `custom.form_public`, or `formLookOptions().look`). */
|
|
4443
|
+
look: Partial<PortalStyle> | null | undefined;
|
|
4444
|
+
/** The form's title, the page's one heading. */
|
|
4445
|
+
title: string;
|
|
4446
|
+
/** The runner. */
|
|
4447
|
+
children: ReactNode;
|
|
4448
|
+
/** The builder's preview pane: the accent band sits on the pane, not across the window. */
|
|
4449
|
+
contained?: boolean | undefined;
|
|
4450
|
+
className?: string | undefined;
|
|
4451
|
+
}
|
|
4452
|
+
declare function FormLookFrame({ look, title, children, contained, className }: FormLookFrameProps): react.JSX.Element;
|
|
4453
|
+
|
|
4293
4454
|
interface DigestSchedulerProps {
|
|
4294
4455
|
/** The Table the digest is about. A saved view is a view OF something. */
|
|
4295
4456
|
tableId: Uuid;
|
|
@@ -4480,6 +4641,8 @@ declare const CHART_KINDS: ChartKind[];
|
|
|
4480
4641
|
declare const CHART_NEEDS: Record<ChartKind, string | null>;
|
|
4481
4642
|
/** ONE BLOCK, in the words a screen edits. */
|
|
4482
4643
|
interface ChartSpec {
|
|
4644
|
+
/** The block's own id, kept across saves, resizes and moves; minted when absent (`withBlockIds`). */
|
|
4645
|
+
id?: string;
|
|
4483
4646
|
title: string;
|
|
4484
4647
|
/** The Table this block asks about. */
|
|
4485
4648
|
subject: Uuid$1;
|
|
@@ -4547,8 +4710,15 @@ declare function dashboardDeclareArgs(board: SavedDashboard, subject: Uuid$1): {
|
|
|
4547
4710
|
* without a hex code anywhere in this package.
|
|
4548
4711
|
*/
|
|
4549
4712
|
declare const SERIES_COLORS: readonly ["hsl(var(--primary))", "hsl(var(--info))", "hsl(var(--success))", "hsl(var(--warning))", "hsl(var(--destructive))", "hsl(var(--accent-foreground))"];
|
|
4713
|
+
/**
|
|
4714
|
+
* The words for a group value a screen can name better than the store's raw value — a link
|
|
4715
|
+
* column's linked record (`ChartBlock`'s `custom.relation_words_many`). A string is the name;
|
|
4716
|
+
* `null` means "this column is named, and this value has no name this reader may see" (—);
|
|
4717
|
+
* `undefined` means "not a named column", and the value is shown as the store gave it.
|
|
4718
|
+
*/
|
|
4719
|
+
type GroupNamer = (key: string, value: string) => string | null | undefined;
|
|
4550
4720
|
/** The label one aggregate row carries — its groups, joined the way a person reads them. */
|
|
4551
|
-
declare function groupLabel(groups: Record<string, string | null
|
|
4721
|
+
declare function groupLabel(groups: Record<string, string | null>, named?: GroupNamer): string;
|
|
4552
4722
|
|
|
4553
4723
|
/** The same shape `components/ui/chart.tsx` takes: one entry per series key. */
|
|
4554
4724
|
type ChartConfig = Record<string, {
|
|
@@ -4671,9 +4841,11 @@ interface ChartBlockProps {
|
|
|
4671
4841
|
block: DashboardBlockResult;
|
|
4672
4842
|
/** The dashboard's subject Table, for a block that names none of its own. */
|
|
4673
4843
|
subject: Uuid$1;
|
|
4844
|
+
/** The table this chart reads, named in its header on a dashboard across tables. */
|
|
4845
|
+
tableName?: string | undefined;
|
|
4674
4846
|
className?: string | undefined;
|
|
4675
4847
|
}
|
|
4676
|
-
declare function ChartBlock({ block, subject, className }: ChartBlockProps): react.JSX.Element;
|
|
4848
|
+
declare function ChartBlock({ block, subject, tableName, className }: ChartBlockProps): react.JSX.Element;
|
|
4677
4849
|
|
|
4678
4850
|
interface DashboardCanvasProps {
|
|
4679
4851
|
/** The Table these blocks are about. */
|
|
@@ -4692,6 +4864,253 @@ interface DashboardCanvasProps {
|
|
|
4692
4864
|
}
|
|
4693
4865
|
declare function DashboardCanvas({ tableId, activeDashboardId, filter, createOnMount, onCreated, className }: DashboardCanvasProps): react.JSX.Element;
|
|
4694
4866
|
|
|
4867
|
+
interface QuestionPanelProps {
|
|
4868
|
+
tableId: Uuid;
|
|
4869
|
+
/** A saved Question the address named (`?view=questions&item=<id>`). */
|
|
4870
|
+
activeQuestionId?: Uuid | null | undefined;
|
|
4871
|
+
className?: string | undefined;
|
|
4872
|
+
}
|
|
4873
|
+
declare function QuestionPanel({ tableId, activeQuestionId, className }: QuestionPanelProps): react.JSX.Element;
|
|
4874
|
+
|
|
4875
|
+
type QuestionOp = "count" | "sum" | "avg" | "min" | "max";
|
|
4876
|
+
declare const QUESTION_OPS: readonly QuestionOp[];
|
|
4877
|
+
interface QuestionMeasure {
|
|
4878
|
+
op: QuestionOp;
|
|
4879
|
+
/** The Field measured; absent for `count`. */
|
|
4880
|
+
key?: string | undefined;
|
|
4881
|
+
}
|
|
4882
|
+
/** What the answer is cut into. */
|
|
4883
|
+
type QuestionGroup = {
|
|
4884
|
+
kind: "field";
|
|
4885
|
+
key: string;
|
|
4886
|
+
} | {
|
|
4887
|
+
kind: "bucket";
|
|
4888
|
+
key: string;
|
|
4889
|
+
by: AggregateBucket;
|
|
4890
|
+
}
|
|
4891
|
+
/** A column of the table a relation points at: `Patient.Referring physician`. */
|
|
4892
|
+
| {
|
|
4893
|
+
kind: "through";
|
|
4894
|
+
relation: string;
|
|
4895
|
+
key: string;
|
|
4896
|
+
};
|
|
4897
|
+
/** A condition on a column of the table a relation points at ("Patient.Referring physician is …"). */
|
|
4898
|
+
interface ThroughCondition {
|
|
4899
|
+
relation: string;
|
|
4900
|
+
key: string;
|
|
4901
|
+
value: string | number | boolean | null;
|
|
4902
|
+
}
|
|
4903
|
+
type QuestionShow = "table" | "bar" | "column" | "line" | "donut" | "number";
|
|
4904
|
+
interface QuestionSpec {
|
|
4905
|
+
v: 1;
|
|
4906
|
+
measures: QuestionMeasure[];
|
|
4907
|
+
/** The grid's condition builder's Rule, on this table's own Fields (by id). */
|
|
4908
|
+
where: RuleExpression | null;
|
|
4909
|
+
/** Conditions across a relation, ANDed with `where`. */
|
|
4910
|
+
through: ThroughCondition[];
|
|
4911
|
+
group: QuestionGroup | null;
|
|
4912
|
+
/** An ISO moment: the table as the store held it then. Null = now. */
|
|
4913
|
+
asOf: string | null;
|
|
4914
|
+
/** Groups sorted by the FIRST measure (`measure`) or by how many records each holds. Null = the store's default. */
|
|
4915
|
+
order: {
|
|
4916
|
+
by: "measure" | "count";
|
|
4917
|
+
direction: "desc" | "asc";
|
|
4918
|
+
} | null;
|
|
4919
|
+
/** How many groups are shown. */
|
|
4920
|
+
limit: number;
|
|
4921
|
+
show: QuestionShow;
|
|
4922
|
+
}
|
|
4923
|
+
declare function newQuestion(): QuestionSpec;
|
|
4924
|
+
/** A kept definition read back: anything malformed becomes the empty question, never a throw. */
|
|
4925
|
+
declare function questionFromDefinition(definition: unknown): QuestionSpec;
|
|
4926
|
+
interface QuestionRow {
|
|
4927
|
+
/** The group's stored value (a relation's record id, a period's local moment, a word), or null. */
|
|
4928
|
+
group: string | null;
|
|
4929
|
+
/** By measure key (`count`, `sum_copay`). Null = no value (never 0 passed off as one). */
|
|
4930
|
+
values: Record<string, number | null>;
|
|
4931
|
+
/** A measure over a column this reader may not read: the store's own notice, by measure key. */
|
|
4932
|
+
withheld: Record<string, HiddenFieldNotice & {
|
|
4933
|
+
says?: string;
|
|
4934
|
+
}>;
|
|
4935
|
+
/** How many records the group was measured over. */
|
|
4936
|
+
n: number;
|
|
4937
|
+
}
|
|
4938
|
+
interface QuestionAnswer {
|
|
4939
|
+
rows: QuestionRow[];
|
|
4940
|
+
/** The measure keys, in the order asked. */
|
|
4941
|
+
measures: string[];
|
|
4942
|
+
/** The key the group values are under (a bucket's is `<key>_<by>`), or null. */
|
|
4943
|
+
groupKey: string | null;
|
|
4944
|
+
/** How many groups exist; `groupsExact` false when it is "at least". */
|
|
4945
|
+
groupsTotal: number | null;
|
|
4946
|
+
groupsExact: boolean;
|
|
4947
|
+
truncated: boolean;
|
|
4948
|
+
asOf: string | null;
|
|
4949
|
+
}
|
|
4950
|
+
/**
|
|
4951
|
+
* The Rule as a FLAT map (Field key → value) when it is only "is" conditions joined by ALL — the
|
|
4952
|
+
* one shape the as-of door and a condition across a relation can carry. Null when it is more.
|
|
4953
|
+
*/
|
|
4954
|
+
declare function flatWhere(where: RuleExpression | null, fields: readonly Field[]): Record<string, unknown> | null;
|
|
4955
|
+
/**
|
|
4956
|
+
* ASK THE STORE. `fields` are this table's Fields (the condition builder writes Fields by id, and a
|
|
4957
|
+
* formula column cannot be asked "as of"). Every number in the answer is a door's.
|
|
4958
|
+
*/
|
|
4959
|
+
declare function askQuestion(client: RecordsClient, tableId: Uuid$1, spec: QuestionSpec, fields: readonly Field[]): Promise<RecordsResult<QuestionAnswer>>;
|
|
4960
|
+
/**
|
|
4961
|
+
* THE COLUMNS THIS READER MAY NOT READ, asked of the store: one aggregate measuring how many
|
|
4962
|
+
* records fill each column that carries a sensitivity, and every measure the store WITHHOLDS is a
|
|
4963
|
+
* column never offered. Nothing is guessed from levels here; the store decides, as it does for the
|
|
4964
|
+
* grid's cells.
|
|
4965
|
+
*/
|
|
4966
|
+
declare function unreadableKeys(client: RecordsClient, tableId: Uuid$1, fields: readonly Field[]): Promise<Set<string>>;
|
|
4967
|
+
/** The columns a measure other than count may read: numbers (formula arithmetic included); min/max also dates. */
|
|
4968
|
+
declare function measurableFields(fields: readonly Field[], op: QuestionOp): Field[];
|
|
4969
|
+
/** The saved-view surface a Question is kept under, beside the table's views (`custom/records`). */
|
|
4970
|
+
declare const QUESTION_SURFACE = "custom/records/question";
|
|
4971
|
+
interface SavedQuestion {
|
|
4972
|
+
id: Uuid$1;
|
|
4973
|
+
name: string;
|
|
4974
|
+
spec: QuestionSpec;
|
|
4975
|
+
/** Shared with the organization (`internal`) or kept for its maker (`personal`). */
|
|
4976
|
+
shared: boolean;
|
|
4977
|
+
version: number;
|
|
4978
|
+
createdBy: Uuid$1 | null;
|
|
4979
|
+
}
|
|
4980
|
+
/** The table's Questions this person may read (the row's own access decides). */
|
|
4981
|
+
declare function questionsOf(client: RecordsClient, tableId: Uuid$1): Promise<RecordsResult<SavedQuestion[]>>;
|
|
4982
|
+
/** Keep a Question (new when `id` is absent). `null` data = somebody changed it first. */
|
|
4983
|
+
declare function questionSave(client: RecordsClient, args: {
|
|
4984
|
+
id?: Uuid$1 | null;
|
|
4985
|
+
tableId: Uuid$1;
|
|
4986
|
+
name: string;
|
|
4987
|
+
spec: QuestionSpec;
|
|
4988
|
+
shared: boolean;
|
|
4989
|
+
expectedVersion?: number;
|
|
4990
|
+
}): Promise<RecordsResult<SavedQuestion | null>>;
|
|
4991
|
+
/** Archive a Question (its maker, or an admin of it). */
|
|
4992
|
+
declare function questionArchive(client: RecordsClient, id: Uuid$1, version?: number): Promise<RecordsResult<boolean>>;
|
|
4993
|
+
|
|
4994
|
+
interface PageScreenProps {
|
|
4995
|
+
/** The page to open. */
|
|
4996
|
+
pageId?: Uuid | null | undefined;
|
|
4997
|
+
/** Make a new page on this Table instead (its starter: a list and a record panel), then open it. */
|
|
4998
|
+
newOnTable?: Uuid | null | undefined;
|
|
4999
|
+
/** The signed-in person: "Assigned to me" is her own Person record. */
|
|
5000
|
+
viewerUserId?: string | null | undefined;
|
|
5001
|
+
/** Told the id of the page `newOnTable` made. */
|
|
5002
|
+
onCreated?: ((pageId: Uuid) => void) | undefined;
|
|
5003
|
+
/** The page was archived: the host leaves it. */
|
|
5004
|
+
onArchived?: (() => void) | undefined;
|
|
5005
|
+
/** Open in edit mode (a page just made). */
|
|
5006
|
+
startEditing?: boolean | undefined;
|
|
5007
|
+
/** The host's header, handed the page's name and its controls. Left out, a plain row is drawn. */
|
|
5008
|
+
header?: ((args: {
|
|
5009
|
+
name: string;
|
|
5010
|
+
actions: ReactNode;
|
|
5011
|
+
}) => ReactNode) | undefined;
|
|
5012
|
+
className?: string | undefined;
|
|
5013
|
+
}
|
|
5014
|
+
declare function PageScreen({ pageId, newOnTable, viewerUserId, onCreated, onArchived, startEditing, header, className, }: PageScreenProps): react.JSX.Element;
|
|
5015
|
+
|
|
5016
|
+
/** Every kind of block a page holds. `chart` points at a block in the dashboard's own `blocks`. */
|
|
5017
|
+
declare const PAGE_BLOCK_KINDS: readonly ["list", "record", "button", "form", "filter", "chart", "heading", "text"];
|
|
5018
|
+
type PageBlockKind = (typeof PAGE_BLOCK_KINDS)[number];
|
|
5019
|
+
/** What "Add block" reads for each kind. */
|
|
5020
|
+
declare const PAGE_BLOCK_LABEL: Record<PageBlockKind, string>;
|
|
5021
|
+
interface PageBlockBase {
|
|
5022
|
+
/** Stable across saves, moves and resizes. */
|
|
5023
|
+
id: string;
|
|
5024
|
+
/** Width in twelfths from 640 px up (`dashboardLayout.ts`); full width on a phone. */
|
|
5025
|
+
span?: number;
|
|
5026
|
+
title?: string;
|
|
5027
|
+
}
|
|
5028
|
+
interface ListPageBlock extends PageBlockBase {
|
|
5029
|
+
kind: "list";
|
|
5030
|
+
table_id: Uuid$1;
|
|
5031
|
+
/** A saved view of the table: its filter and sort shape the list. */
|
|
5032
|
+
view_id?: Uuid$1 | null;
|
|
5033
|
+
/** The block's own question, the store's flat filter (field key → value). */
|
|
5034
|
+
filter?: RecordFilter;
|
|
5035
|
+
/** The columns shown, by field key; left out, the first few the table declares. */
|
|
5036
|
+
columns?: string[];
|
|
5037
|
+
/** A person column. Offers "Assigned to me": the viewer's own Person record against it. */
|
|
5038
|
+
me_field?: string | null;
|
|
5039
|
+
/** Whether "Assigned to me" starts on. */
|
|
5040
|
+
me_default?: boolean;
|
|
5041
|
+
limit?: number;
|
|
5042
|
+
}
|
|
5043
|
+
interface RecordPageBlock extends PageBlockBase {
|
|
5044
|
+
kind: "record";
|
|
5045
|
+
/** The list block whose selected row this panel shows. */
|
|
5046
|
+
source: string;
|
|
5047
|
+
}
|
|
5048
|
+
interface ButtonPageBlock extends PageBlockBase {
|
|
5049
|
+
kind: "button";
|
|
5050
|
+
/** The list block whose selected row the action runs on. */
|
|
5051
|
+
source: string;
|
|
5052
|
+
table_id: Uuid$1;
|
|
5053
|
+
/** An existing row action of that table (`custom.row_actions`). */
|
|
5054
|
+
action_id: Uuid$1;
|
|
5055
|
+
}
|
|
5056
|
+
interface FormPageBlock extends PageBlockBase {
|
|
5057
|
+
kind: "form";
|
|
5058
|
+
table_id: Uuid$1;
|
|
5059
|
+
form_id: Uuid$1;
|
|
5060
|
+
}
|
|
5061
|
+
interface FilterPageBlock extends PageBlockBase {
|
|
5062
|
+
kind: "filter";
|
|
5063
|
+
table_id: Uuid$1;
|
|
5064
|
+
/** A choice (or yes/no) column of that table. */
|
|
5065
|
+
field: string;
|
|
5066
|
+
/** The list blocks it narrows. Empty = every list on the page over the same table. */
|
|
5067
|
+
targets?: string[];
|
|
5068
|
+
}
|
|
5069
|
+
interface ChartPageBlock extends PageBlockBase {
|
|
5070
|
+
kind: "chart";
|
|
5071
|
+
}
|
|
5072
|
+
interface HeadingPageBlock extends PageBlockBase {
|
|
5073
|
+
kind: "heading";
|
|
5074
|
+
text: string;
|
|
5075
|
+
}
|
|
5076
|
+
interface TextPageBlock extends PageBlockBase {
|
|
5077
|
+
kind: "text";
|
|
5078
|
+
text: string;
|
|
5079
|
+
}
|
|
5080
|
+
type PageBlock = ListPageBlock | RecordPageBlock | ButtonPageBlock | FormPageBlock | FilterPageBlock | ChartPageBlock | HeadingPageBlock | TextPageBlock;
|
|
5081
|
+
/** The `presentation.kind` that makes a dashboard record a Page. */
|
|
5082
|
+
declare const PAGE_KIND = "page";
|
|
5083
|
+
/** Is this dashboard row a Page? Every row with no kind is a dashboard (the store's default). */
|
|
5084
|
+
declare function isPage(row: Pick<DashboardSummary, "presentation"> | {
|
|
5085
|
+
presentation?: unknown;
|
|
5086
|
+
}): boolean;
|
|
5087
|
+
/**
|
|
5088
|
+
* The page's blocks in reading order, read strictly out of `presentation`. A chart the store holds
|
|
5089
|
+
* in `blocks` but the order does not name is appended (it was added by an agent or the old canvas),
|
|
5090
|
+
* and a `chart` entry whose block is gone is dropped — the page never draws a block it cannot answer.
|
|
5091
|
+
*/
|
|
5092
|
+
declare function pageBlocksOf(presentation: Record<string, unknown> | null | undefined, chartIds: readonly string[]): PageBlock[];
|
|
5093
|
+
/** The presentation a page is saved with: its kind and its blocks, everything else it held kept. */
|
|
5094
|
+
declare function pagePresentation(presentation: Record<string, unknown> | null | undefined, blocks: readonly PageBlock[]): Record<string, unknown>;
|
|
5095
|
+
/**
|
|
5096
|
+
* THE STARTER PAGE on one table, the way Airtable's record-review layout starts: the table's records
|
|
5097
|
+
* on the left, the chosen one on the right. One press makes a page that already works.
|
|
5098
|
+
*/
|
|
5099
|
+
declare function starterPageBlocks(tableId: Uuid$1): PageBlock[];
|
|
5100
|
+
/** The list blocks a filter block narrows: those it names, or every list over its table. */
|
|
5101
|
+
declare function filterTargets(filter: FilterPageBlock, blocks: readonly PageBlock[]): string[];
|
|
5102
|
+
/**
|
|
5103
|
+
* ONE QUESTION FOR A LIST BLOCK, in the store's own filter shapes. `base` is the view's question —
|
|
5104
|
+
* its `where` Rule or its flat `filters` — and `extra` the page's own (the block's filter, the
|
|
5105
|
+
* filter blocks, "Assigned to me"), all equalities by key. Both flat: one merged map (the page's
|
|
5106
|
+
* value wins). The view asks a Rule: the extras join it under `and`, by field id, which is the only
|
|
5107
|
+
* way the Rule shape names a column (REC-17). An extra whose key has no id is left out and named.
|
|
5108
|
+
*/
|
|
5109
|
+
declare function combineFilter(base: StoreFilter | null | undefined, extra: RecordFilter, fieldIdOf: (key: string) => string | undefined): {
|
|
5110
|
+
filter: StoreFilter | null;
|
|
5111
|
+
dropped: string[];
|
|
5112
|
+
};
|
|
5113
|
+
|
|
4695
5114
|
interface FormsPanelProps {
|
|
4696
5115
|
tableId: Uuid;
|
|
4697
5116
|
/**
|
|
@@ -4870,10 +5289,16 @@ declare function ChecklistsPanel({ tableId, onOpenRecord, className }: Checklist
|
|
|
4870
5289
|
* sentence arrives BEFORE the save rather than after it. There is no second
|
|
4871
5290
|
* validator here: a rule written twice is a rule that will disagree with itself.
|
|
4872
5291
|
*/
|
|
4873
|
-
declare function ChecklistTemplateEditor({ aboutTableId, templateId, onDone, className, }: {
|
|
5292
|
+
declare function ChecklistTemplateEditor({ aboutTableId, templateId, onDone, onSaved, className, }: {
|
|
4874
5293
|
aboutTableId: Uuid;
|
|
4875
5294
|
templateId?: Uuid | null | undefined;
|
|
5295
|
+
/** Cancel; and, when the host passes no `onSaved`, a finished Save. */
|
|
4876
5296
|
onDone?: (() => void) | undefined;
|
|
5297
|
+
/**
|
|
5298
|
+
* A Save landed: the checklist's id. Passed, the editor STAYS open and says it is saved (the
|
|
5299
|
+
* host decides where to go); every later Save re-states that same checklist.
|
|
5300
|
+
*/
|
|
5301
|
+
onSaved?: ((templateId: Uuid) => void) | undefined;
|
|
4877
5302
|
className?: string | undefined;
|
|
4878
5303
|
}): react.JSX.Element;
|
|
4879
5304
|
|
|
@@ -5064,40 +5489,6 @@ interface RecordsMountProps {
|
|
|
5064
5489
|
}
|
|
5065
5490
|
declare function RecordsMount({ config, host, letTheStoreDecideRights, children, }: RecordsMountProps): react.JSX.Element;
|
|
5066
5491
|
declare function personActor(userId: Uuid$1 | null | undefined): RecordsActor;
|
|
5067
|
-
/**
|
|
5068
|
-
* A supabase-js client AS this package's data seam.
|
|
5069
|
-
*
|
|
5070
|
-
* `RecordsDataSource` is deliberately a small structural subset of
|
|
5071
|
-
* `SupabaseClient` — the package holds no key and opens no connection, the host
|
|
5072
|
-
* hands it a client that already carries the person's session.
|
|
5073
|
-
*
|
|
5074
|
-
* IT IS NOT AN IDENTITY CAST, and it cost a live screen to learn why
|
|
5075
|
-
* (2026-09-19, /data-v2's first load): the port's `rpc(fn, args, { schema })`
|
|
5076
|
-
* says the schema OUT LOUD, because every door of this store is `custom.<name>`
|
|
5077
|
-
* and every door of the trust layer is `iam.<name>`. supabase-js's own
|
|
5078
|
-
* `rpc(fn, args, options)` has no `schema` option at all — its third argument is
|
|
5079
|
-
* `{ head, get, count }` — so a client passed straight through silently asked
|
|
5080
|
-
* its default PostgREST profile and the store answered, correctly and uselessly,
|
|
5081
|
-
* "Could not find the function public.table_kernel_id ... PGRST202". The schema
|
|
5082
|
-
* is chosen the one way supabase-js offers: `client.schema(name).rpc(...)`.
|
|
5083
|
-
*
|
|
5084
|
-
* `schema(name).from(table)` already agrees structurally and is passed through.
|
|
5085
|
-
*
|
|
5086
|
-
* `fallbackSchema` is the profile a call that says NOTHING is sent to. No caller
|
|
5087
|
-
* in `@ai-matrx/records` omits the option — `callDoor` always says `custom` and
|
|
5088
|
-
* `trustDoor` always says `iam` — so it never fires today; it exists so that a
|
|
5089
|
-
* call which one day forgets lands on the store rather than silently on
|
|
5090
|
-
* `public`. It is a FALLBACK and not the answer: a version of this adapter that
|
|
5091
|
-
* sent EVERY door to one fixed schema would route the `iam` trust doors (the
|
|
5092
|
-
* external principal, the publish binding) into `custom` and get a PGRST202
|
|
5093
|
-
* naming the wrong schema.
|
|
5094
|
-
*
|
|
5095
|
-
* The cast itself stays HERE, once, where it is explained: a generated
|
|
5096
|
-
* `Database` type makes `schema().from().select()` enormous, and a host app that
|
|
5097
|
-
* passes its client straight into `config` gets `TS2589: Type instantiation is
|
|
5098
|
-
* excessively deep and possibly infinite` in its own build (matrx-frontend,
|
|
5099
|
-
* 2026-09-18, on all three campaign routes at once).
|
|
5100
|
-
*/
|
|
5101
5492
|
declare function recordsDataSource(client: object, fallbackSchema?: string): RecordsDataSource;
|
|
5102
5493
|
|
|
5103
5494
|
type TableLane = "mine" | "organization" | "system" | "community" | "app";
|
|
@@ -5137,7 +5528,8 @@ declare function laneFor(table: Table): TableLane;
|
|
|
5137
5528
|
* filter over these four leaves it out rather than inventing a lane for it.
|
|
5138
5529
|
*
|
|
5139
5530
|
* From the record's own `visibility`, the store's closed four:
|
|
5140
|
-
*
|
|
5531
|
+
* Only me → Only me · the default → Everyone · Everyone on AI Matrx → Everyone on AI Matrx ·
|
|
5532
|
+
* Published to the web → Published to the web (an older store: its `visibility` word).
|
|
5141
5533
|
*
|
|
5142
5534
|
* 🚨 WHY `link` IS WORLD (chair ruling, 2026-09-23). A link anyone can open
|
|
5143
5535
|
* WITHOUT signing in is reachable by the world; being unlisted does not make it
|
|
@@ -5148,6 +5540,12 @@ declare function laneFor(table: Table): TableLane;
|
|
|
5148
5540
|
*/
|
|
5149
5541
|
type VisibilityLane = "mine" | "organization" | "community" | "world";
|
|
5150
5542
|
declare const VISIBILITY_LANES: readonly VisibilityLane[];
|
|
5543
|
+
/**
|
|
5544
|
+
* THE LAW'S WORDS (access ladder Words table), and no other lane names: "Shown to" Only me /
|
|
5545
|
+
* Everyone / Everyone on AI Matrx, and "Published to the web" for anyone on the internet.
|
|
5546
|
+
* "Everyone on AI Matrx" is offered only on a Public table; a store Table is Organization, so
|
|
5547
|
+
* nothing lands there today.
|
|
5548
|
+
*/
|
|
5151
5549
|
declare const VISIBILITY_LANE_TITLE: Record<VisibilityLane, string>;
|
|
5152
5550
|
/** Which visibility lane one Table is in, or `null` when no person chose one for it. */
|
|
5153
5551
|
declare function visibilityLaneFor(table: Table): VisibilityLane | null;
|
|
@@ -5370,6 +5768,12 @@ interface TablePageProps {
|
|
|
5370
5768
|
* disabled, with its reason.
|
|
5371
5769
|
*/
|
|
5372
5770
|
actionHost?: TablePageActionHost | undefined;
|
|
5771
|
+
/**
|
|
5772
|
+
* THE TABLE'S ACTIONS, HANDED TO THE HOST (lane TABLE-ACTIONS wave 4, T4.1): called with the
|
|
5773
|
+
* very list the header ⋯ draws, after every render, so a host's command bar runs exactly what the
|
|
5774
|
+
* menu runs (the same `run`). The page itself answers the ⌥⇧ chords (`TABLE_ACTION_KEYS`).
|
|
5775
|
+
*/
|
|
5776
|
+
onActions?: ((actions: readonly ObjectAction[]) => void) | undefined;
|
|
5373
5777
|
/**
|
|
5374
5778
|
* WHAT THE PERSON IS ACTUALLY LOOKING AT (lane V24-TAILS, VERIFIER-24 item 6): the saved view
|
|
5375
5779
|
* with her look laid over it and the address's overrides, exactly as the page draws it — so a
|
|
@@ -5472,7 +5876,7 @@ declare const VIEW_NOT_SAVED_YET: string;
|
|
|
5472
5876
|
* one of the ways to look at this table, not a Trash area of the app somebody
|
|
5473
5877
|
* has to know exists.
|
|
5474
5878
|
*/
|
|
5475
|
-
type MainView = "records" | "dashboards" | "archived";
|
|
5879
|
+
type MainView = "records" | "dashboards" | "archived" | "questions";
|
|
5476
5880
|
/**
|
|
5477
5881
|
* WHAT THE PAGE IS SHOWING — the middle and the right-hand panel, as ONE answer.
|
|
5478
5882
|
*
|
|
@@ -5558,7 +5962,7 @@ declare function openingView(activeView: string | null | undefined, activeDashbo
|
|
|
5558
5962
|
layout: ViewLayout | null;
|
|
5559
5963
|
unknown: string | null;
|
|
5560
5964
|
};
|
|
5561
|
-
declare function TablePage({ tableId, pageSize, seedViews, onLeave, leaveLabel, activeDashboardId, activeRecordId, activeView, onViewChanged, activeGroupField, cameFrom, filter, activeRail, activeItemId, header, actionHost, onShownViewChange, className, }: TablePageProps): react.JSX.Element;
|
|
5965
|
+
declare function TablePage({ tableId, pageSize, seedViews, onLeave, leaveLabel, activeDashboardId, activeRecordId, activeView, onViewChanged, activeGroupField, cameFrom, filter, activeRail, activeItemId, header, actionHost, onActions, onShownViewChange, className, }: TablePageProps): react.JSX.Element;
|
|
5562
5966
|
|
|
5563
5967
|
/**
|
|
5564
5968
|
* The page's toolbar slot: an element (controls go there), `null` (the row is mounting — draw
|
|
@@ -5758,6 +6162,8 @@ interface PipelineBoardProps {
|
|
|
5758
6162
|
onOpenRecord?: ((recordId: Uuid) => void) | undefined;
|
|
5759
6163
|
/** Called after a move lands, so the host re-reads the rows it owns. */
|
|
5760
6164
|
onMoved?: (() => void) | undefined;
|
|
6165
|
+
/** A card's menu copied or archived a record: the host re-reads the rows it owns. */
|
|
6166
|
+
onChanged?: (() => void) | undefined;
|
|
5761
6167
|
/**
|
|
5762
6168
|
* THE COLORS THE REST OF THE VIEW PAINTS WITH (lane UI-QUICK-1) — `resolveTableStyle`'s answer,
|
|
5763
6169
|
* the table's G1 decorations under the view's own look. `ViewSwitcher`'s board passes the one it
|
|
@@ -5772,7 +6178,7 @@ interface PipelineBoardProps {
|
|
|
5772
6178
|
dateFields?: readonly Field$1[] | undefined;
|
|
5773
6179
|
className?: string | undefined;
|
|
5774
6180
|
}
|
|
5775
|
-
declare function PipelineBoard({ tableId, rows, titleKey, measure, filter, onMeasureChange, onOpenRecord, onMoved, style, dateFields, className, }: PipelineBoardProps): react.JSX.Element;
|
|
6181
|
+
declare function PipelineBoard({ tableId, rows, titleKey, measure, filter, onMeasureChange, onOpenRecord, onMoved, onChanged, style, dateFields, className, }: PipelineBoardProps): react.JSX.Element;
|
|
5776
6182
|
|
|
5777
6183
|
/** The source's Dimensions, as the door says them; a choice and a relation read by their words. */
|
|
5778
6184
|
declare function drillDimensionsOf(def: DrillDefinition | null, labels: ReadonlyMap<string, ReadonlyMap<string, string>>): MatrxDrillDimension[];
|
|
@@ -5843,4 +6249,92 @@ declare function ObjectActionGlyph({ name, ...props }: {
|
|
|
5843
6249
|
name: ObjectActionIcon;
|
|
5844
6250
|
} & SVGAttributes<SVGSVGElement>): react.JSX.Element;
|
|
5845
6251
|
|
|
5846
|
-
export { ABSENCE_WORD_LABEL, ABSENCE_WORD_VALUES, ACTION_KINDS, ARCHIVED_NEVER_DESTROYED, ARCHIVE_MEANS, type AbsenceWord, AccentSwatches, type AccentSwatchesProps, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, type AnnounceTableArchived, ArchivedDisclosure, type ArchivedDisclosureProps, ArchivedPortals, type ArchivedPortalsProps, ArchivedView, type ArchivedViewProps, 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, 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 ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, type ChoiceAddition, type ChoiceAsk, ChoiceAskButtons, ChoiceListEditor, type ChoiceListRow, 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, EntityReferenceKindPicker, type EntityReferenceKindPickerProps, ExampleTables, 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 FooterPlacement, type FormAsked, FormBuilder, type FormBuilderProps, type FormFlow, type FormLook, 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, HistoryPanel, type HistoryPanelProps, type HostLayout, INBOX_GROUPINGS, INBOX_VIEWS, IN_MEMORY_QUEUE_REASON, 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, MACHINE_IDENTITY, MANUAL_SORT, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, type MainView, type MoveWritten, MyChecklistSteps, NEEDS_A_SENTENCE, NOT_DRAWN_HERE, NO_AGENT_PORT, NO_CHAT_REASON, NO_COLUMNS_WHY, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_RULES_YET, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, ObjectAction, ObjectActionGlyph, ObjectActionIcon, ObjectActionMenuItems, type ObjectActionMenuItemsProps, type OpenRecordsAsk, type OrganizationMember, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, PORTAL_NOT_HERE_LINE, PROPOSED_CHANGE_ACT_LABEL, PROPOSED_CHANGE_ACT_VALUES, type PageView, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, 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, PublicViewPage, type PublicViewPageProps, ROLLUP_AGG_LABEL, ROLLUP_AGG_VALUES, RULE_NOT_HERE_LINE, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, type RecordMoves, RecordValue, RecordsMount, type RecordsMountProps, RecordsTableCard, type RecordsTableCardProps, type RecordsUiHost, RecordsUiProvider, ReferenceBuilder, type ReferenceBuilderProps, type ReferenceChoice, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, type RenderTextSlot, type ResolveName, 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 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, StepRow, type SubscriptionChannel, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NAME_MAX, TABLE_NOT_REACHABLE, THE_SYSTEM, TIMELINE_ZOOMS, TableActionHost, type TableLane, type TableOpening, TablePage, type TablePageActionHost, type TablePageHeaderChrome, type TablePageProps, type TablePickerEntries, type TablePickerEntry, TableRenameDialog, TableRestoreRefused, type TableRights, TableSettings, type TableSettingsProps, TableShape, TableToolbarSlotContext, TablesHome, type TablesHomeProps, type TimelineSettings, TimelineView, type TimelineViewProps, type TimelineZoom, type TrackedVersion, UNREAD_RECORD_LABEL, type UseSystemTableState, VIEW_KEYS, VIEW_LAYOUTS, VIEW_NEEDS, VIEW_NOT_SAVED_YET, VISIBILITY_LANES, VISIBILITY_LANE_TITLE, 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, askableFields, blockFromSpec, bodyForReading, bodyFromKeys, calendarDayLabel, calendarDayOf, cameFromLine, cardTitleField, cardWords, carriesTimeOfDay, cellState, choiceAddition, choiceAskSentence, choiceListPatch, choiceNudgeOf, choiceRowsFrom, chooseSurface, colorFromTheValue, columnDeclarationFor, columnForField, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, currencyCodeFor, customFieldRequestProblems, dashboardDeclareArgs, dashboardFromSummary, dateFormatFor, dateText, dayAt, dayKeyOf, daysBetween, declareView, defaultViewOf, designatedLayoutOf, drawnSignatureOf, drillDimensionsOf, drillMeasuresOf, drillPathsOf, drillWhere, editorKindFor, ensureSystemTable, entityReferenceSpec, envelopeFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, footerOf, formDeclareArgs, formFromSummary, formLookDocument, formLookFromDocument, formPresentation, formatForField, freeColumnName, freshFormName, gridContextKey, gridContextSnapshot, groupInbox, groupLabel, groupableFields, handOrderLine, handOrderSortState, hasTimePart, hintForAPerson, hintIsMachineIdentity, idsOf, isChoiceAddition, isDateField, isEngineerText, isId, isKeptTable, isMachineIdentity, isParityFieldType, isPlainFieldType, isRelationFieldType, isSignatureField, isValueSet, keepLook, keptByTheApp, keyFor, kindsWithNoChoice, laneFor, lastChangeSentence, lookDiffers, lookDocument, lookFromDocument, lookPart, looksLikeId, machineIdentityIn, mayNotRestoreLine, memberName, moveRecordValue, nextInWords, nextSummaryAt, notAChoiceSentence, onlyCandidate, openingRail, openingView, packOverlaps, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pickableTypeOf, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, previewWords, publiclyAnswerable, railFromParam, readLooks, recordName, recordNameIn, recordsDataSource, refusal, refusalForAPerson, refusalFromThrown, refusalLineForAPerson, refusalOr, renderValue, rescheduledValue, resolveTableStyle, revokeConsequence, rowName, rowNameIn, saveToViewPlan, saveViewPatch, scalarText, seedIsSatisfied, shapesOfSource, shareUnavailableReason, signatureWords, singularNoun, snoozeChoices, specFromBlock, storeDecidesRights, storeKeepsLayout, storePublishesKind, styleFromDecorations, submissionStamp, surfaceChosen, tableName, tableNameProblem, tableOpening, tablePickerEntries, tableRightsAt, unknownRailLine, unknownViewLine, useCanShare, useChoiceNudge, useDrill, useDrillAnswers, useDrillDefinition, useEmbedHandshake, useEnrichCells, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, usePickerTables, useRecordLabels, useRecordMoves, useRecordRights, useRecordsUi, useRowColorBy, useRowRights, useSystemTable, useTableRights, useTableToolbarSlot, useViewRecords, useWhoChanged, viewDocument, viewFromRow, viewKeysFor, viewNeedFor, viewPatchDocument, viewSettings, viewSettingsFor, viewSettingsPatch, visibilityLaneFor, whatIsMissing, whatIsMissingForEntityReference, whatTheChoiceListIsMissing, whenWords, whyNotAskable, withheldNoticeOf, withheldSentence, withoutAddition, wordsList };
|
|
6252
|
+
/** What the list needs to know about the record. */
|
|
6253
|
+
interface RecordActionSubject {
|
|
6254
|
+
id: Uuid$1;
|
|
6255
|
+
tableId: Uuid$1;
|
|
6256
|
+
/** The record's name as every card reads it (`recordNameIn` / `cardWords`). */
|
|
6257
|
+
name: string;
|
|
6258
|
+
}
|
|
6259
|
+
type RecordHandler = (record: RecordActionSubject) => void | Promise<void>;
|
|
6260
|
+
/** THE SIDE EFFECTS THIS LIST CANNOT OWN. A handler left out keeps its action, disabled. */
|
|
6261
|
+
interface RecordActionHost {
|
|
6262
|
+
/** Origin for Copy link and Open in new tab. Default `https://www.aimatrx.com`. */
|
|
6263
|
+
origin?: string;
|
|
6264
|
+
/**
|
|
6265
|
+
* The record's own page (the host's `hrefForRecord`), absolute or root-relative. When given, Copy
|
|
6266
|
+
* link and Open in new tab carry it instead of the table page with `?record=`.
|
|
6267
|
+
*/
|
|
6268
|
+
href?: string;
|
|
6269
|
+
open?: RecordHandler;
|
|
6270
|
+
openInNewTab?: (url: string, record: RecordActionSubject) => void;
|
|
6271
|
+
/** Runs inside the click (the clipboard needs the gesture). */
|
|
6272
|
+
copyText?: (text: string, record: RecordActionSubject) => void | Promise<void>;
|
|
6273
|
+
duplicate?: RecordHandler;
|
|
6274
|
+
history?: RecordHandler;
|
|
6275
|
+
archive?: RecordHandler;
|
|
6276
|
+
/** Why an action whose handler is left out is unavailable here, by id (≤ 60 chars). */
|
|
6277
|
+
unavailableReasons?: Readonly<Record<string, string>>;
|
|
6278
|
+
/** Another lane's record entries; same rules as `TableActionHost.extend`. */
|
|
6279
|
+
extend?: (record: RecordActionSubject, rights: WhatYouMayDo) => readonly ObjectAction[];
|
|
6280
|
+
}
|
|
6281
|
+
interface RecordActionsInput {
|
|
6282
|
+
record: RecordActionSubject;
|
|
6283
|
+
/** The person's rights on the record (its row level), or on the table when that is all there is. */
|
|
6284
|
+
rights: WhatYouMayDo;
|
|
6285
|
+
host: RecordActionHost;
|
|
6286
|
+
}
|
|
6287
|
+
/** The one link to a record: the table page with the record open, `<origin>/data-v2/<table>?record=<id>`. */
|
|
6288
|
+
declare function recordLink(tableId: string, recordId: string, origin?: string): string;
|
|
6289
|
+
/**
|
|
6290
|
+
* THE RECORD'S ACTIONS, in the one order. Same ids, same order, same verbs for every seat and every
|
|
6291
|
+
* host — only `disabledReason` varies.
|
|
6292
|
+
*/
|
|
6293
|
+
declare function recordActions(input: RecordActionsInput): ObjectAction[];
|
|
6294
|
+
|
|
6295
|
+
interface RecordActionHostArgs {
|
|
6296
|
+
tableId: Uuid;
|
|
6297
|
+
row: ReadRow$1;
|
|
6298
|
+
onOpenRecord?: ((recordId: Uuid) => void) | undefined;
|
|
6299
|
+
/** Re-read the surface after a copy or an archive. */
|
|
6300
|
+
onChanged?: (() => void) | undefined;
|
|
6301
|
+
}
|
|
6302
|
+
/** The handlers a record card's menu runs, bound to this package's client and the host's ports. */
|
|
6303
|
+
declare function useRecordActionHost({ tableId, row, onOpenRecord, onChanged }: RecordActionHostArgs): RecordActionHost;
|
|
6304
|
+
declare function ObjectActionContextMenuItems({ actions }: {
|
|
6305
|
+
actions: readonly ObjectAction[];
|
|
6306
|
+
}): react.JSX.Element;
|
|
6307
|
+
interface RecordActionMenuProps extends RecordActionHostArgs {
|
|
6308
|
+
/** The record's name as the card reads it. */
|
|
6309
|
+
name: string;
|
|
6310
|
+
/** The card itself. */
|
|
6311
|
+
children: ReactNode;
|
|
6312
|
+
className?: string | undefined;
|
|
6313
|
+
}
|
|
6314
|
+
/** A record card with its ⋯ and its right-click, both drawing `recordActions()`. */
|
|
6315
|
+
declare function RecordActionMenu({ tableId, row, name, onOpenRecord, onChanged, children, className }: RecordActionMenuProps): react.JSX.Element;
|
|
6316
|
+
|
|
6317
|
+
interface ViewActionHost {
|
|
6318
|
+
rename?: () => void;
|
|
6319
|
+
duplicate?: () => void | Promise<void>;
|
|
6320
|
+
archive?: () => void | Promise<void>;
|
|
6321
|
+
}
|
|
6322
|
+
/** `whyNot`: the person's reason they may not change this table's views, or null when they may. */
|
|
6323
|
+
declare function viewActions(whyNot: string | null, host: ViewActionHost): ObjectAction[];
|
|
6324
|
+
|
|
6325
|
+
interface RecordPanelProps {
|
|
6326
|
+
tableId: Uuid;
|
|
6327
|
+
recordId: Uuid;
|
|
6328
|
+
/** Put the record away (the rail's close). Absent on a page of its own. */
|
|
6329
|
+
onClose?: (() => void) | undefined;
|
|
6330
|
+
/**
|
|
6331
|
+
* "Who changed this column?" — the rail opens its own panel. Absent, the panel answers in place,
|
|
6332
|
+
* under the history.
|
|
6333
|
+
*/
|
|
6334
|
+
onAskAboutField?: ((fieldKey: string) => void) | undefined;
|
|
6335
|
+
/** Drawn as the record's own page (no "Open" link to itself). */
|
|
6336
|
+
onPage?: boolean | undefined;
|
|
6337
|
+
}
|
|
6338
|
+
declare function RecordPanel({ tableId, recordId, onClose, onAskAboutField, onPage }: RecordPanelProps): react.JSX.Element;
|
|
6339
|
+
|
|
6340
|
+
export { ABSENCE_WORD_LABEL, ABSENCE_WORD_VALUES, ACTION_KINDS, ARCHIVED_NEVER_DESTROYED, ARCHIVE_MEANS, type AbsenceWord, AccentSwatches, type AccentSwatchesProps, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, type AnnounceTableArchived, ArchivedDisclosure, type ArchivedDisclosureProps, ArchivedPortals, type ArchivedPortalsProps, ArchivedView, type ArchivedViewProps, 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, 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, EntityReferenceKindPicker, type EntityReferenceKindPickerProps, ExampleTables, 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, 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, type MainView, type MoveWritten, MyChecklistSteps, NEEDS_A_SENTENCE, NOT_DRAWN_HERE, NO_AGENT_PORT, NO_CHAT_REASON, NO_COLUMNS_WHY, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_RULES_YET, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, 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, type QuestionGroup, type QuestionMeasure, type QuestionOp, QuestionPanel, type QuestionPanelProps, type QuestionRow, type QuestionShow, type QuestionSpec, ROLLUP_AGG_LABEL, ROLLUP_AGG_VALUES, RULE_NOT_HERE_LINE, type ReaskContext, type RecordActionHost, RecordActionMenu, type RecordActionMenuProps, type RecordActionSubject, type RecordActionsInput, 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, RecordsTableCard, type RecordsTableCardProps, type RecordsUiHost, RecordsUiProvider, ReferenceBuilder, type ReferenceBuilderProps, type ReferenceChoice, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, type RenderTextSlot, type ResolveName, 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, StepRow, type SubscriptionChannel, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NAME_MAX, TABLE_NOT_REACHABLE, THE_SYSTEM, TIMELINE_ZOOMS, TableActionHost, TableFoundationSwitch, type TableLane, type TableOpening, TablePage, type TablePageActionHost, type TablePageHeaderChrome, type TablePageProps, type TablePickerEntries, type TablePickerEntry, TableRenameDialog, TableRestoreRefused, type TableRights, TableSettings, type TableSettingsProps, TableShape, TableToolbarSlotContext, TablesHome, type TablesHomeProps, type TextPageBlock, type ThroughCondition, type TimelineSettings, TimelineView, type TimelineViewProps, type TimelineZoom, type TrackedVersion, UNREAD_RECORD_LABEL, type UseSystemTableState, VIEW_KEYS, VIEW_LAYOUTS, VIEW_NEEDS, VIEW_NOT_SAVED_YET, VISIBILITY_LANES, VISIBILITY_LANE_TITLE, 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, askQuestion, askableFields, blockFromSpec, bodyForReading, bodyFromKeys, calendarDayLabel, calendarDayOf, cameFromLine, cardTitleField, cardWords, carriesTimeOfDay, cellState, choiceAddition, choiceAskSentence, choiceListPatch, choiceNudgeOf, choiceRowsFrom, chooseSurface, colorFromTheValue, columnDeclarationFor, columnForField, combineFilter, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, currencyCodeFor, customFieldRequestProblems, dashboardDeclareArgs, dashboardFromSummary, dateFormatFor, dateText, dayAt, dayKeyOf, daysBetween, declareView, defaultViewOf, designatedLayoutOf, drawnSignatureOf, drillDimensionsOf, drillMeasuresOf, drillPathsOf, drillWhere, editorKindFor, ensureSystemTable, entityReferenceSpec, envelopeFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, filterTargets, flatWhere, footerOf, formDeclareArgs, formFromSummary, formLookDocument, formLookFromDocument, formLookView, formPresentation, formatForField, freeColumnName, freshFormName, gridContextKey, gridContextSnapshot, groupInbox, groupLabel, groupableFields, handOrderLine, handOrderSortState, hasTimePart, hintForAPerson, hintIsMachineIdentity, idsOf, isChoiceAddition, isDateField, isEngineerText, isFoundationTable, isId, isKeptTable, isMachineIdentity, isPage, isParityFieldType, isPlainFieldType, isRelationFieldType, isSignatureField, isValueSet, 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, questionSave, questionsOf, railFromParam, readLooks, recordActions, recordLink, recordName, recordNameIn, recordsDataSource, refusal, refusalForAPerson, refusalFromThrown, refusalLineForAPerson, refusalOr, renderValue, rescheduledValue, resolveTableStyle, revokeConsequence, rowName, rowNameIn, saveToViewPlan, saveViewPatch, scalarText, seedIsSatisfied, shapesOfSource, shareUnavailableReason, signatureFileIn, signatureFileOf, signatureWords, singularNoun, snoozeChoices, specFromBlock, starterPageBlocks, storeDecidesRights, storeKeepsLayout, storePublishesKind, styleFromDecorations, submissionStamp, surfaceChosen, tableName, tableNameProblem, tableOpening, tablePickerEntries, tableRightsAt, unknownRailLine, unknownViewLine, unreadableKeys, useCanShare, useChoiceNudge, useDrill, useDrillAnswers, useDrillDefinition, useEmbedHandshake, useEnrichCells, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, usePickerTables, useRecordActionHost, useRecordLabels, useRecordMoves, useRecordRights, useRecordsUi, useRowColorBy, useRowRights, useSystemTable, useTableRights, useTableToolbarSlot, useViewRecords, useWhoChanged, viewActions, viewDocument, viewFromRow, viewKeysFor, viewNeedFor, viewPatchDocument, viewSettings, viewSettingsFor, viewSettingsPatch, visibilityLaneFor, whatIsMissing, whatIsMissingForEntityReference, whatTheChoiceListIsMissing, whenWords, whyNotAskable, withheldNoticeOf, withheldSentence, withoutAddition, wordsList };
|