@ai-matrx/records-ui 0.63.0 → 0.66.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +114 -0
- package/dist/index.cjs +398 -307
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +213 -17
- package/dist/index.d.ts +213 -17
- package/dist/index.js +392 -295
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { ReactNode, ComponentType, RefObject } from 'react';
|
|
3
3
|
import * as _ai_matrx_records from '@ai-matrx/records';
|
|
4
|
-
import { PermissionLevel, Table, RecordScopeContext, EnrichCell, RecordsError, Uuid as Uuid$1, AggregateFilter, Field, RecordDocument, ReadRow, RelationDisplay, WriteConflict, ParityFieldType, NewFieldDeclaration, RuleExpression, ValueEnvelope, WorkInboxKind, FormSummary, PortalCard, PortalPrincipal, PortalPreviewRow, DashboardBlockKind, AggregateBucket, AggregateMeasure, DashboardBlock, DashboardSummary, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, HistoryActor, FieldHistoryEntry, FieldTypeWord } from '@ai-matrx/records';
|
|
4
|
+
import { PermissionLevel, Table, RecordScopeContext, EnrichCell, RecordsError, Uuid as Uuid$1, AggregateFilter, Field, RecordDocument, ReadRow, RelationDisplay, WriteConflict, ParityFieldType, NewFieldDeclaration, RuleExpression, ValueEnvelope, ChecklistRequirementKind, ContextPolicy, WorkDueState, FieldSensitivity, StageRuleOnFail, SubscriptionCadence, WorkInboxKind, FieldKind, FormSummary, PortalCard, PortalPrincipal, PortalPreviewRow, DashboardBlockKind, AggregateBucket, AggregateMeasure, DashboardBlock, DashboardSummary, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, HistoryActor, FieldHistoryEntry, FieldTypeWord } from '@ai-matrx/records';
|
|
5
5
|
import { Uuid, Field as Field$1, ReadRow as ReadRow$1 } from '@ai-matrx/records/react';
|
|
6
6
|
import { RecordsClient } from '@ai-matrx/records/core';
|
|
7
7
|
import { FieldFormatConfig } from '@ai-matrx/design-system/field-formats';
|
|
@@ -108,6 +108,12 @@ interface RecordChatContext {
|
|
|
108
108
|
/** The whole door answer, for a host that wants the history or the relations. */
|
|
109
109
|
scope: RecordScopeContext;
|
|
110
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* FOR WHOEVER MAINTAINS THIS APP (never on the screen): bind `chat` on
|
|
113
|
+
* `<RecordsUiProvider>` with the host's own chat surface — in AI Matrx that is
|
|
114
|
+
* `AgentConversationColumn`, launched through a Mandate. This package
|
|
115
|
+
* deliberately ships no second chat UI.
|
|
116
|
+
*/
|
|
111
117
|
declare const NO_CHAT_REASON: string;
|
|
112
118
|
interface RecordChatProps {
|
|
113
119
|
tableId: Uuid;
|
|
@@ -138,6 +144,12 @@ interface EnrichOutcome {
|
|
|
138
144
|
says?: string;
|
|
139
145
|
}>;
|
|
140
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* FOR WHOEVER MAINTAINS THIS APP (never on the screen): bind `enrich` on
|
|
149
|
+
* `<RecordsUiProvider>` with a call to the server's own `records` tool (action
|
|
150
|
+
* `enrich_propose`). Only the server may write a value as an agent — a browser
|
|
151
|
+
* stamping itself `agent` would be a browser claiming to be one.
|
|
152
|
+
*/
|
|
141
153
|
declare const NO_ENRICH_REASON: string;
|
|
142
154
|
/** Which of the four things this cell is. One place, so nothing can disagree. */
|
|
143
155
|
declare function cellState(cell: EnrichCell | undefined): "none" | "agent" | "yours" | "unsure";
|
|
@@ -487,17 +499,52 @@ interface PendingCapture {
|
|
|
487
499
|
attempts: number;
|
|
488
500
|
lastRefusal?: string | null;
|
|
489
501
|
}
|
|
490
|
-
/**
|
|
502
|
+
/**
|
|
503
|
+
* The sentence the notify editor shows when no saved-view port is bound.
|
|
504
|
+
*
|
|
505
|
+
* FOR WHOEVER MAINTAINS THIS APP (never on the screen): bind `savedViews` on
|
|
506
|
+
* `<RecordsUiProvider>` with the host's own list of `platform.saved_view` rows —
|
|
507
|
+
* the record store has no door onto them — and the picker appears.
|
|
508
|
+
*/
|
|
491
509
|
declare const NO_SAVED_VIEWS_REASON: string;
|
|
492
|
-
/**
|
|
510
|
+
/**
|
|
511
|
+
* The sentence a person question shows when no membership port is bound.
|
|
512
|
+
*
|
|
513
|
+
* FOR WHOEVER MAINTAINS THIS APP (never on the screen): bind `members` on
|
|
514
|
+
* `<RecordsUiProvider>` with the host's own roster. Who is in an organization is
|
|
515
|
+
* the platform's answer, not the record store's, so this package will not guess.
|
|
516
|
+
*/
|
|
493
517
|
declare const NO_MEMBERS_REASON: string;
|
|
494
|
-
/**
|
|
518
|
+
/**
|
|
519
|
+
* The sentence shown when no share dialog is bound.
|
|
520
|
+
*
|
|
521
|
+
* FOR WHOEVER MAINTAINS THIS APP (never on the screen): bind `share` on
|
|
522
|
+
* `<RecordsUiProvider>` with the app's own sharing dialog. AI Matrx has exactly
|
|
523
|
+
* one, and this package deliberately does not ship a second.
|
|
524
|
+
*/
|
|
495
525
|
declare const NO_SHARE_REASON: string;
|
|
496
|
-
/**
|
|
526
|
+
/**
|
|
527
|
+
* The sentence a canvas shows when nothing is bound to open the records behind a number.
|
|
528
|
+
*
|
|
529
|
+
* FOR WHOEVER MAINTAINS THIS APP (never on the screen): bind `openRecords` on
|
|
530
|
+
* `<RecordsUiProvider>`. Where this app puts its grid is the host's routing, not
|
|
531
|
+
* this package's, so it will not guess an address.
|
|
532
|
+
*/
|
|
497
533
|
declare const NO_OPEN_RECORDS_REASON: string;
|
|
498
|
-
/**
|
|
534
|
+
/**
|
|
535
|
+
* The sentence the re-ask box shows when no agent is bound.
|
|
536
|
+
*
|
|
537
|
+
* FOR WHOEVER MAINTAINS THIS APP (never on the screen): bind `onReask` on
|
|
538
|
+
* `<RecordsUiProvider>`; it drives `dashboard_propose` on the server's `records`
|
|
539
|
+
* tool with this dashboard's id. Only the server can honestly speak as an agent.
|
|
540
|
+
*/
|
|
499
541
|
declare const NO_REASK_REASON: string;
|
|
500
|
-
/**
|
|
542
|
+
/**
|
|
543
|
+
* The sentence an attachment question shows when no file store is bound.
|
|
544
|
+
*
|
|
545
|
+
* FOR WHOEVER MAINTAINS THIS APP (never on the screen): bind `upload` on
|
|
546
|
+
* `<RecordsUiProvider>` with the host's file service and the chooser appears.
|
|
547
|
+
*/
|
|
501
548
|
declare const NO_UPLOAD_REASON: string;
|
|
502
549
|
declare function RecordsUiProvider({ value, children }: {
|
|
503
550
|
value: RecordsUiHost;
|
|
@@ -549,6 +596,28 @@ declare function isMachineIdentity(text: string): boolean;
|
|
|
549
596
|
* the suite to say WHAT it found rather than only that it found something.
|
|
550
597
|
*/
|
|
551
598
|
declare function machineIdentityIn(text: string): string[];
|
|
599
|
+
/**
|
|
600
|
+
* 🚨 A HINT THIS PACKAGE OR ITS CLIENT WROTE IS NOT A PERSON'S REMEDY.
|
|
601
|
+
*
|
|
602
|
+
* `refusalForAPerson` prefers the DOOR's own hint over the table above, because
|
|
603
|
+
* the door that refused knows more about the way out than a code does. That is
|
|
604
|
+
* right — but it assumed every hint came from the store. It did not: until
|
|
605
|
+
* `@ai-matrx/records` 0.47.0 the client appended its OWN note to `hint` when it
|
|
606
|
+
* met a SQLSTATE it did not know, and the machine-identity filter let it
|
|
607
|
+
* through whenever the code was not exactly five characters (an empty code from
|
|
608
|
+
* a dropped connection, or an HTTP status like `404`). So the Checklists tab of
|
|
609
|
+
* a plumbing company's jobs table told its owner:
|
|
610
|
+
*
|
|
611
|
+
* @ai-matrx/records did not recognise SQLSTATE from checklistTemplates
|
|
612
|
+
*
|
|
613
|
+
* The client no longer writes there. This is the guard on the other side, by
|
|
614
|
+
* SHAPE and not by that one sentence: a hint that talks about a package, a
|
|
615
|
+
* SQLSTATE, or a `camelCaseDoor` is engineer text wherever it came from, and it
|
|
616
|
+
* joins the engineer's line instead of a person's screen.
|
|
617
|
+
*/
|
|
618
|
+
declare const ENGINEER_TEXT: RegExp[];
|
|
619
|
+
/** Whether this sentence was written for whoever maintains the code. */
|
|
620
|
+
declare function isEngineerText(text: string): boolean;
|
|
552
621
|
/** The one shape every screen in this package renders a refusal from. */
|
|
553
622
|
interface PlainRefusal {
|
|
554
623
|
/** The heading. Never the store's code. */
|
|
@@ -1186,11 +1255,34 @@ declare const CONDITION_OPS: Array<{
|
|
|
1186
1255
|
op: string;
|
|
1187
1256
|
label: string;
|
|
1188
1257
|
}>;
|
|
1189
|
-
/**
|
|
1258
|
+
/**
|
|
1259
|
+
* A column this condition may speak about, by id — which is how the store names them.
|
|
1260
|
+
*
|
|
1261
|
+
* 🚨 IT CARRIES THE FIELD NOW, AND THAT IS A DEFECT BEING FIXED (lane RELATION-DISPLAY-2,
|
|
1262
|
+
* 2026-09-21). This was `{id, key, label}` and nothing else, so the builder could not know
|
|
1263
|
+
* that a column POINTS AT ANOTHER RECORD. A relation clause therefore rendered the same
|
|
1264
|
+
* plain text box every other clause gets — and since a relation's stored value is the
|
|
1265
|
+
* other record's id (FLD-6 / REL-1), the only way to write a true one was for a person to
|
|
1266
|
+
* find and TYPE A UUID. Nobody does that, which means "only jobs for this customer" was a
|
|
1267
|
+
* gate a non-technical person could not write at all, on a builder whose whole purpose is
|
|
1268
|
+
* that they can.
|
|
1269
|
+
*
|
|
1270
|
+
* `field` is OPTIONAL and everything still works without it: a caller that passes only the
|
|
1271
|
+
* three strings gets exactly the old behaviour. Both callers in this package already hold
|
|
1272
|
+
* the whole `Field` and were throwing it away one line before handing it over.
|
|
1273
|
+
*/
|
|
1190
1274
|
interface ConditionField {
|
|
1191
1275
|
id: string;
|
|
1192
1276
|
key: string;
|
|
1193
1277
|
label: string;
|
|
1278
|
+
/**
|
|
1279
|
+
* The Field itself, when the caller has it. Present, a relation clause picks a record BY
|
|
1280
|
+
* ITS DISPLAYED WORDS through `RelationPicker` — the same picker the cell uses, reading
|
|
1281
|
+
* the same `relation_words_many` the cell reads, so what a person chooses in a filter and
|
|
1282
|
+
* what they see in the column are the same string. It writes the ID, which is what the
|
|
1283
|
+
* store compares.
|
|
1284
|
+
*/
|
|
1285
|
+
field?: Field;
|
|
1194
1286
|
}
|
|
1195
1287
|
interface ConditionRowProps {
|
|
1196
1288
|
/** The words before the row: "Ask only when", "When". */
|
|
@@ -1424,16 +1516,63 @@ declare function RecordValue({ field, value, document, format, }: {
|
|
|
1424
1516
|
format?: FieldFormatConfig | undefined;
|
|
1425
1517
|
}): react.JSX.Element;
|
|
1426
1518
|
|
|
1519
|
+
declare const WORK_DUE_STATES: readonly ["overdue", "due_today", "scheduled", "undated", "finished"];
|
|
1520
|
+
declare const DUE_STATE_LABEL: Record<WorkDueState, string>;
|
|
1521
|
+
declare const WORK_INBOX_KINDS: readonly ["assignment", "approval", "proposal"];
|
|
1522
|
+
declare const WORK_INBOX_KIND_LABEL: Record<WorkInboxKind, string>;
|
|
1523
|
+
declare const CHECKLIST_REQUIREMENT_KINDS: readonly ["none", "note", "answer", "record_field", "form", "document"];
|
|
1524
|
+
declare const CHECKLIST_REQUIREMENT_LABEL: Record<ChecklistRequirementKind, string>;
|
|
1525
|
+
declare const FIELD_SENSITIVITY_LABEL: Record<FieldSensitivity, string>;
|
|
1526
|
+
declare const CONTEXT_POLICY_LABEL: Record<ContextPolicy, string>;
|
|
1527
|
+
declare const STAGE_RULE_ON_FAIL_LABEL: Record<StageRuleOnFail, string>;
|
|
1528
|
+
declare const SUBSCRIPTION_CADENCES: readonly ["instant", "hourly", "daily", "weekly"];
|
|
1529
|
+
declare const SUBSCRIPTION_CADENCE_LABEL: Record<SubscriptionCadence, string>;
|
|
1530
|
+
declare const SUBSCRIPTION_CHANNEL_VALUES: readonly ["in_app", "email", "sms"];
|
|
1531
|
+
type SubscriptionChannel = (typeof SUBSCRIPTION_CHANNEL_VALUES)[number];
|
|
1532
|
+
declare const SUBSCRIPTION_CHANNEL_LABEL: Record<SubscriptionChannel, string>;
|
|
1533
|
+
declare const ROLLUP_AGG_VALUES: readonly ["count", "sum", "avg", "min", "max"];
|
|
1534
|
+
type RollupAgg = (typeof ROLLUP_AGG_VALUES)[number];
|
|
1535
|
+
declare const ROLLUP_AGG_LABEL: Record<RollupAgg, string>;
|
|
1536
|
+
declare const FORMULA_OP_VALUES: readonly ["concat", "add", "sub", "mul", "div"];
|
|
1537
|
+
type FormulaOp = (typeof FORMULA_OP_VALUES)[number];
|
|
1538
|
+
declare const FORMULA_OP_LABEL: Record<FormulaOp, string>;
|
|
1539
|
+
/** Whether this operation reads naturally as "X and Y and Z…" over more than two columns. */
|
|
1540
|
+
declare const FORMULA_OP_JOINS: Record<FormulaOp, boolean>;
|
|
1541
|
+
declare const FIELD_RULE_KIND_VALUES: readonly ["min", "max", "length", "pattern", "equals_field", "differs_from_field"];
|
|
1542
|
+
type FieldRuleKindValue = (typeof FIELD_RULE_KIND_VALUES)[number];
|
|
1543
|
+
declare const FIELD_RULE_KIND_LABEL: Record<FieldRuleKindValue, string>;
|
|
1544
|
+
declare const PROPOSED_CHANGE_ACT_VALUES: readonly ["add", "update", "remove"];
|
|
1545
|
+
type ProposedChangeAct = (typeof PROPOSED_CHANGE_ACT_VALUES)[number];
|
|
1546
|
+
declare const PROPOSED_CHANGE_ACT_LABEL: Record<ProposedChangeAct, string>;
|
|
1547
|
+
declare const BOOKING_PAGE_STATE_VALUES: readonly ["draft", "open", "closed", "full"];
|
|
1548
|
+
type BookingPageState = (typeof BOOKING_PAGE_STATE_VALUES)[number];
|
|
1549
|
+
declare const BOOKING_PAGE_STATE_LABEL: Record<BookingPageState, string>;
|
|
1550
|
+
declare const ABSENCE_WORD_VALUES: readonly ["never asked", "none", "refused", "conflicting"];
|
|
1551
|
+
type AbsenceWord = (typeof ABSENCE_WORD_VALUES)[number];
|
|
1552
|
+
declare const ABSENCE_WORD_LABEL: Record<AbsenceWord, string>;
|
|
1553
|
+
|
|
1427
1554
|
declare const PARITY_LABEL: Record<ParityFieldType, string>;
|
|
1428
1555
|
/** The "made of" sentence the store itself publishes, for the field editor's help text. */
|
|
1429
1556
|
declare const PARITY_MADE_OF: Record<string, string>;
|
|
1430
|
-
/**
|
|
1431
|
-
|
|
1557
|
+
/**
|
|
1558
|
+
* Plain text and plain number are behaviours with no parity type of their own.
|
|
1559
|
+
*
|
|
1560
|
+
* 🚨 THIS IS NOW AN ALIAS, AND THAT IS THE POINT (TAILS-3, 2026-09-21). The
|
|
1561
|
+
* classifier moved into `@ai-matrx/records` as `FieldKind` so that the editor a
|
|
1562
|
+
* person types into and the COERCION applied to what they typed are decided by
|
|
1563
|
+
* one body. They were decided by two, and the public booking page paid for it:
|
|
1564
|
+
* "Vehicle Year takes a number, and it was given a string" on every table with
|
|
1565
|
+
* a number field.
|
|
1566
|
+
*/
|
|
1567
|
+
type EditorKind = FieldKind;
|
|
1432
1568
|
/**
|
|
1433
1569
|
* Which editor one Field wants. Reads the Field's own declaration only — the
|
|
1434
1570
|
* behaviour, the modifiers, the format, the relation target and the config —
|
|
1435
1571
|
* because those are what the store stores, and a screen that guessed from a
|
|
1436
1572
|
* value would draw a different editor for an empty record.
|
|
1573
|
+
*
|
|
1574
|
+
* It is `fieldKindFor` with this package's kernel ids bound. Nothing here
|
|
1575
|
+
* decides anything the core does not.
|
|
1437
1576
|
*/
|
|
1438
1577
|
declare function editorKindFor(field: Field): EditorKind;
|
|
1439
1578
|
/**
|
|
@@ -1933,10 +2072,25 @@ declare function PortalBuilder({ tableId, portalId, onSaved, onClose, className
|
|
|
1933
2072
|
|
|
1934
2073
|
interface PortalsPanelProps {
|
|
1935
2074
|
/**
|
|
1936
|
-
*
|
|
1937
|
-
*
|
|
1938
|
-
*
|
|
1939
|
-
*
|
|
2075
|
+
* The Table whose page this rail is on. THE RAIL IS SCOPED TO IT: it lists
|
|
2076
|
+
* the portals that INCLUDE this table, and nothing else.
|
|
2077
|
+
*
|
|
2078
|
+
* 🚨 THIS NOTE USED TO SAY THE OPPOSITE, and the opposite was a defect
|
|
2079
|
+
* (AGENT-BUILDS-2, measured on Rincon Plumbing Co; chair ruling 2026-09-21).
|
|
2080
|
+
* It read: "It never filters the list — a portal belongs to the
|
|
2081
|
+
* organization, and hiding the others would answer a question nobody asked."
|
|
2082
|
+
* A portal does belong to the organization. But this rail sits on a TABLE's
|
|
2083
|
+
* page, beside Forms, Bookings and Dashboards, every one of which is
|
|
2084
|
+
* table-scoped — and emptiness here decided the whole "Build it / Ask an
|
|
2085
|
+
* agent" offer. So on Rincon's **Parts** table, eight rows of copper pipe and
|
|
2086
|
+
* wax rings, the rail read "Portals 10" and listed ten cards titled "Your
|
|
2087
|
+
* jobs and invoices", which belong to **Jobs**. The empty state never
|
|
2088
|
+
* rendered, `BuildOrAsk` never rendered, and the agent half of the product
|
|
2089
|
+
* was unreachable on EVERY table of that organization. Four Rincon tables
|
|
2090
|
+
* were tried and all four refused to offer it.
|
|
2091
|
+
*
|
|
2092
|
+
* Omit it and the rail is organization-wide again, which is right for a
|
|
2093
|
+
* mount that is not standing on a table.
|
|
1940
2094
|
*/
|
|
1941
2095
|
tableId?: Uuid | undefined;
|
|
1942
2096
|
className?: string | undefined;
|
|
@@ -2033,7 +2187,9 @@ interface BuildOrAskProps {
|
|
|
2033
2187
|
whyNot?: string | null | undefined;
|
|
2034
2188
|
/**
|
|
2035
2189
|
* The host's agent port. Unbound, the second button is absent and the
|
|
2036
|
-
* sentence below names what is missing.
|
|
2190
|
+
* sentence below names what is missing. Bound but `mayBuild` false, it is
|
|
2191
|
+
* absent too: an agent asked to do what this person may not do gets refused
|
|
2192
|
+
* by the same doors, five minutes later, with nothing to show for it.
|
|
2037
2193
|
*/
|
|
2038
2194
|
onAsk?: (() => void) | undefined;
|
|
2039
2195
|
/** The words a person would actually say, offered as the starting sentence. */
|
|
@@ -2466,6 +2622,11 @@ declare function nextInWords(page: Pick<BookingSummary, "next_at" | "timezone" |
|
|
|
2466
2622
|
/** The three things a phone captures. Each one writes the SAME kind of record. */
|
|
2467
2623
|
declare const CAPTURE_MODES: readonly ["reading", "photo", "voice"];
|
|
2468
2624
|
type CaptureMode = (typeof CAPTURE_MODES)[number];
|
|
2625
|
+
/**
|
|
2626
|
+
* FOR WHOEVER MAINTAINS THIS APP (never on the screen): bind `captureQueue` on
|
|
2627
|
+
* `<RecordsUiProvider>` with the host's own durable store — IndexedDB in a
|
|
2628
|
+
* browser — and a queued capture survives the tab, the reload and the flight.
|
|
2629
|
+
*/
|
|
2469
2630
|
declare const IN_MEMORY_QUEUE_REASON: string;
|
|
2470
2631
|
interface CaptureSheetProps {
|
|
2471
2632
|
/**
|
|
@@ -2712,6 +2873,31 @@ interface TablePageProps {
|
|
|
2712
2873
|
* copy it out of the address bar afterwards.
|
|
2713
2874
|
*/
|
|
2714
2875
|
onViewChanged?: ((view: PageView) => void) | undefined;
|
|
2876
|
+
/**
|
|
2877
|
+
* WHICH FIELD THE ADDRESS WANTS THE BOARD'S COLUMNS TO BE, for this visit.
|
|
2878
|
+
*
|
|
2879
|
+
* 🚨 THIS IS HOW A DASHBOARD NUMBER CLICKS THROUGH (lane TAILS-6, 2026-09-22).
|
|
2880
|
+
* Until today the canvas told the owner of the business to "bind `openRecords`
|
|
2881
|
+
* on <RecordsUiProvider>" — a developer's sentence on a customer's screen —
|
|
2882
|
+
* because nothing in this app routed a bar or a slice anywhere. The store has
|
|
2883
|
+
* no door that returns the ROWS behind an aggregate filter, so a click cannot
|
|
2884
|
+
* honestly promise a narrowed list; what it CAN do is open this table's board
|
|
2885
|
+
* with its columns set to the very field the chart grouped by, where the
|
|
2886
|
+
* column the person clicked is right there and every card in it is real.
|
|
2887
|
+
*
|
|
2888
|
+
* It overrides the saved view's own `groupField` for this visit only, exactly
|
|
2889
|
+
* as `activeView` overrides its layout, and it is never written back.
|
|
2890
|
+
*/
|
|
2891
|
+
activeGroupField?: string | null | undefined;
|
|
2892
|
+
/**
|
|
2893
|
+
* WHAT THE PERSON CLICKED TO GET HERE — "Jobs by stage · Awaiting parts".
|
|
2894
|
+
*
|
|
2895
|
+
* Present, the board says where they came from AND says plainly that it is
|
|
2896
|
+
* showing every record grouped by that field rather than only the ones the
|
|
2897
|
+
* number counted. A screen that quietly showed more rows than the number
|
|
2898
|
+
* promised would be the number lying twice.
|
|
2899
|
+
*/
|
|
2900
|
+
cameFrom?: string | null | undefined;
|
|
2715
2901
|
className?: string | undefined;
|
|
2716
2902
|
}
|
|
2717
2903
|
/**
|
|
@@ -2730,6 +2916,16 @@ interface TablePageProps {
|
|
|
2730
2916
|
* whether the table exists: this person cannot see it, and which of the two it
|
|
2731
2917
|
* is is not theirs to learn.
|
|
2732
2918
|
*/
|
|
2919
|
+
/**
|
|
2920
|
+
* WHAT THE BOARD SAYS TO SOMEBODY A DASHBOARD NUMBER SENT HERE.
|
|
2921
|
+
*
|
|
2922
|
+
* It says two things and neither is optional: which number they clicked, and
|
|
2923
|
+
* that this is every record grouped by that field rather than only the ones the
|
|
2924
|
+
* number counted. The store has no door that returns the rows behind an
|
|
2925
|
+
* aggregate filter, so claiming a narrowed list would be a lie — and showing a
|
|
2926
|
+
* wider one silently would be the same lie with nobody told.
|
|
2927
|
+
*/
|
|
2928
|
+
declare function cameFromLine(label: string, groupField: string | null): string;
|
|
2733
2929
|
declare const TABLE_NOT_REACHABLE: string;
|
|
2734
2930
|
/**
|
|
2735
2931
|
* THE VIEW EVERY TABLE HAS, AND WHY IT IS NOT OPTIONAL.
|
|
@@ -2838,7 +3034,7 @@ declare function openingView(activeView: string | null | undefined, activeDashbo
|
|
|
2838
3034
|
layout: ViewLayout | null;
|
|
2839
3035
|
unknown: string | null;
|
|
2840
3036
|
};
|
|
2841
|
-
declare function TablePage({ tableId, pageSize, seedViews, onLeave, leaveLabel, activeDashboardId, activeRecordId, activeView, onViewChanged, className, }: TablePageProps): react.JSX.Element;
|
|
3037
|
+
declare function TablePage({ tableId, pageSize, seedViews, onLeave, leaveLabel, activeDashboardId, activeRecordId, activeView, onViewChanged, activeGroupField, cameFrom, className, }: TablePageProps): react.JSX.Element;
|
|
2842
3038
|
|
|
2843
3039
|
/** What the roster can tell us about a user id. `null` when it cannot. */
|
|
2844
3040
|
type ResolveName = (userId: Uuid$1) => string | null;
|
|
@@ -3016,4 +3212,4 @@ interface PipelineBoardProps {
|
|
|
3016
3212
|
}
|
|
3017
3213
|
declare function PipelineBoard({ tableId, rows, measure, onMeasureChange, onOpenRecord, onMoved, className, }: PipelineBoardProps): react.JSX.Element;
|
|
3018
3214
|
|
|
3019
|
-
export { ACTION_KINDS, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, BookingBuilder, type BookingBuilderProps, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CONDITION_OPS, type Capability, type CaptureMode, type CaptureQueuePort, CaptureRun, type CaptureRunProps, CaptureSheet, type CaptureSheetProps, type CellAddress, type CellRefusal, type CellState, ChartBlock, type ChartBlockProps, type ChartConfig, ChartFrame, type ChartKind, ChartLegendContent, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, CommentThread, type CommentThreadProps, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DigestScheduler, type DigestSchedulerProps, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, ExportMenu, type ExportMenuProps, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FORM_FLOWS, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldTypeChoice, FormBuilder, type FormBuilderProps, type FormFlow, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, Grid, GridCell, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, HistoryPanel, type HistoryPanelProps, IN_MEMORY_QUEUE_REASON, ImportWizard, type ImportWizardProps, KERNEL_REASON, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LAYOUT_NEEDS, LAYOUT_NO_FIELD, LEVEL_WORD, type LabelLookup, MACHINE_IDENTITY, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, type MainView, MyChecklistSteps, NEEDS_A_SENTENCE, NOT_ANSWERED_YET, NOT_DRAWN_HERE, NO_AGENT_PORT, NO_CHAT_REASON, NO_COLUMNS_WHY, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_RULES_YET, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewFieldSpec, type NewTableSpec, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, type PageView, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, type PickableFieldType, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, ProvenanceBadge, PublicViewPage, type PublicViewPageProps, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, RecordValue, RecordsMount, type RecordsMountProps, type RecordsUiHost, RecordsUiProvider, ReferenceBuilder, type ReferenceBuilderProps, type ReferenceChoice, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, type ResolveName, SAVED_VIEWS_UNAVAILABLE, SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS, SERIES_COLORS, SOMEBODY, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StageRulesSection, type StageRulesSectionProps, StepRow, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NOT_REACHABLE, THE_SYSTEM, type TableLane, TablePage, type TablePageProps, type TableRights, TableSettings, type TableSettingsProps, TablesHome, type TablesHomeProps, type TrackedVersion, type UseSystemTableState, VIEW_LAYOUTS, VIEW_NOT_SAVED_YET, VIEW_TABLE, ViewBar, type ViewBarProps, type ViewLayout, type ViewSort, ViewSwitcher, type ViewSwitcherProps, WITHHELD_RECORD_LABEL, type WhatYouMayDo, type WhoChanged, WhoChangedSource, actorBadge, actorWords, addFields, askableFields, blockFromSpec, bodyForReading, bodyFromKeys, cellState, chooseSurface, colorFromTheValue, columnForField, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, currencyCodeFor, dashboardDeclareArgs, dashboardFromSummary, declareTable, editorKindFor, ensureSystemTable, envelopeFor, fieldDeclarationFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, formDeclareArgs, formFromSummary, formPresentation, formatForField, groupLabel, hintForAPerson, hintIsMachineIdentity, humanize, idsOf, isId, isMachineIdentity, isPlainFieldType, isRelationFieldType, isSignatureField, keyFor, laneFor, lastChangeSentence, looksLikeId, machineIdentityIn, memberName, nextInWords, openingRail, openingView, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, previewWords, publiclyAnswerable, recordName, recordNameIn, recordsDataSource, refusalForAPerson, refusalLineForAPerson, renderValue, revokeConsequence, rowName, rowNameIn, scalarText, shareUnavailableReason, specFromBlock, storeDecidesRights, submissionStamp, surfaceChosen, tableName, tableRightsAt, tokenFor, unknownViewLine, useCanShare, useEmbedHandshake, useEnrichCells, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useViewRecords, useWhoChanged, viewDocument, viewFromRecord, viewPatchDocument, whatIsMissing, whatYouMayDo, whatYouMayDoWithTable, whenWords, whyNotAskable };
|
|
3215
|
+
export { ABSENCE_WORD_LABEL, ABSENCE_WORD_VALUES, ACTION_KINDS, type AbsenceWord, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, BOOKING_PAGE_STATE_LABEL, BOOKING_PAGE_STATE_VALUES, BookingBuilder, type BookingBuilderProps, type BookingPageState, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CHECKLIST_REQUIREMENT_KINDS, CHECKLIST_REQUIREMENT_LABEL, CONDITION_OPS, CONTEXT_POLICY_LABEL, type Capability, type CaptureMode, type CaptureQueuePort, CaptureRun, type CaptureRunProps, CaptureSheet, type CaptureSheetProps, type CellAddress, type CellRefusal, type CellState, ChartBlock, type ChartBlockProps, type ChartConfig, ChartFrame, type ChartKind, ChartLegendContent, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, CommentThread, type CommentThreadProps, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DUE_STATE_LABEL, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DigestScheduler, type DigestSchedulerProps, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, ENGINEER_TEXT, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, ExportMenu, type ExportMenuProps, FIELD_RULE_KIND_LABEL, FIELD_RULE_KIND_VALUES, FIELD_SENSITIVITY_LABEL, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FORMULA_OP_JOINS, FORMULA_OP_LABEL, FORMULA_OP_VALUES, FORM_FLOWS, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldRuleKindValue, type FieldTypeChoice, FormBuilder, type FormBuilderProps, type FormFlow, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, type FormulaOp, Grid, GridCell, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, HistoryPanel, type HistoryPanelProps, IN_MEMORY_QUEUE_REASON, ImportWizard, type ImportWizardProps, KERNEL_REASON, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LAYOUT_NEEDS, LAYOUT_NO_FIELD, LEVEL_WORD, type LabelLookup, MACHINE_IDENTITY, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, type MainView, MyChecklistSteps, NEEDS_A_SENTENCE, NOT_ANSWERED_YET, NOT_DRAWN_HERE, NO_AGENT_PORT, NO_CHAT_REASON, NO_COLUMNS_WHY, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_RULES_YET, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewFieldSpec, type NewTableSpec, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, PROPOSED_CHANGE_ACT_LABEL, PROPOSED_CHANGE_ACT_VALUES, type PageView, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, type PickableFieldType, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, type ProposedChangeAct, ProvenanceBadge, PublicViewPage, type PublicViewPageProps, ROLLUP_AGG_LABEL, ROLLUP_AGG_VALUES, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, RecordValue, RecordsMount, type RecordsMountProps, type RecordsUiHost, RecordsUiProvider, ReferenceBuilder, type ReferenceBuilderProps, type ReferenceChoice, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, type ResolveName, type RollupAgg, SAVED_VIEWS_UNAVAILABLE, SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS, SERIES_COLORS, SOMEBODY, STAGE_RULE_ON_FAIL_LABEL, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, SUBSCRIPTION_CADENCES, SUBSCRIPTION_CADENCE_LABEL, SUBSCRIPTION_CHANNEL_LABEL, SUBSCRIPTION_CHANNEL_VALUES, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StageRulesSection, type StageRulesSectionProps, StepRow, type SubscriptionChannel, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NOT_REACHABLE, THE_SYSTEM, type TableLane, TablePage, type TablePageProps, type TableRights, TableSettings, type TableSettingsProps, TablesHome, type TablesHomeProps, type TrackedVersion, type UseSystemTableState, VIEW_LAYOUTS, VIEW_NOT_SAVED_YET, VIEW_TABLE, ViewBar, type ViewBarProps, type ViewLayout, type ViewSort, ViewSwitcher, type ViewSwitcherProps, WITHHELD_RECORD_LABEL, WORK_DUE_STATES, WORK_INBOX_KINDS, WORK_INBOX_KIND_LABEL, type WhatYouMayDo, type WhoChanged, WhoChangedSource, actorBadge, actorWords, addFields, askableFields, blockFromSpec, bodyForReading, bodyFromKeys, cameFromLine, cellState, chooseSurface, colorFromTheValue, columnForField, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, currencyCodeFor, dashboardDeclareArgs, dashboardFromSummary, declareTable, editorKindFor, ensureSystemTable, envelopeFor, fieldDeclarationFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, formDeclareArgs, formFromSummary, formPresentation, formatForField, groupLabel, hintForAPerson, hintIsMachineIdentity, humanize, idsOf, isEngineerText, isId, isMachineIdentity, isPlainFieldType, isRelationFieldType, isSignatureField, keyFor, laneFor, lastChangeSentence, looksLikeId, machineIdentityIn, memberName, nextInWords, openingRail, openingView, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, previewWords, publiclyAnswerable, recordName, recordNameIn, recordsDataSource, refusalForAPerson, refusalLineForAPerson, renderValue, revokeConsequence, rowName, rowNameIn, scalarText, shareUnavailableReason, specFromBlock, storeDecidesRights, submissionStamp, surfaceChosen, tableName, tableRightsAt, tokenFor, unknownViewLine, useCanShare, useEmbedHandshake, useEnrichCells, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useViewRecords, useWhoChanged, viewDocument, viewFromRecord, viewPatchDocument, whatIsMissing, whatYouMayDo, whatYouMayDoWithTable, whenWords, whyNotAskable };
|