@ai-matrx/records-ui 0.103.10 → 0.104.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 +21 -0
- package/dist/index.cjs +4342 -3857
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +476 -474
- package/dist/index.d.ts +476 -474
- package/dist/index.js +4431 -3937
- package/dist/index.js.map +1 -1
- package/dist/pickers.cjs.map +1 -1
- package/dist/pickers.js.map +1 -1
- package/package.json +4 -4
package/dist/index.d.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
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 { Uuid, RowAction, Field, RowActionStep, RecordScopeContext, EnrichCell, RecordsError,
|
|
4
|
+
import { Uuid, RowAction, Field, RowActionStep, RecordScopeContext, EnrichCell, RecordsError, RecordDocument, Table, ReadRow, RecordRead, PermissionLevel, AggregateFilter, RelationDisplay, WriteConflict, RecordsErrorCode, TableDecorations, RecordFilter, RuleExpression, RecordsResult, SavedViewRow, StoreFilter as StoreFilter$1, ImportRun, DeclarableFieldKind, NewerFieldKind, ParityFieldType, NewFieldDeclaration, ChoiceRehome, FieldOptionEdit, StoredRecord, ChoiceNudge, HiddenFieldNotice, ValueEnvelope, ChecklistRequirementKind, ContextPolicy, WorkDueState, FieldSensitivity, StageRuleOnFail, SubscriptionCadence, WorkApprovalState, WorkInboxKind, FieldKind, ArchiveLane, ArchivedRow, WorkInboxView, WorkInboxItem, PortalAccent, FormSummary, PortalCard, PortalPrincipal, PortalPreviewRow, PublicPicture, PortalStyle, MySubscription, DashboardBlockKind, AggregateBucket, AggregateMeasure, AggregateCompare, DashboardTarget, DashboardBlock, DashboardSummary, AggregateGroupValue, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, TableDuplicated, HistoryActor, FieldHistoryEntry, DrillDefinition, DrillSource, TableDuplicateProgress, TableArchiveProgress } from '@ai-matrx/records';
|
|
5
5
|
import { ReversibleAnnouncement } from '@ai-matrx/kit/reversible';
|
|
6
6
|
import { W as WhatYouMayDo, T as TableActionHost, O as ObjectAction, a as ObjectActionIcon } from './objectActions-XkhxU-DP.js';
|
|
7
7
|
export { A as ACTION_CHECKING_ACCESS_REASON, b as ACTION_NOT_HERE_REASON, c as ACTION_NO_ACCESS_REASON, d as ACTION_PLATFORM_TABLE_REASON, B as BuiltOnDestination, C as Capability, D as DEFAULT_ACTION_ORIGIN, K as KERNEL_REASON, L as LEVEL_WORD, N as NOT_ANSWERED_YET, e as OBJECT_ACTION_GROUPS, f as ObjectActionDropdownEntry, g as ObjectActionGroup, h as ObjectActionGroupDef, i as ObjectActionSection, S as STANDARD_VERBS, j as STRIP_FEATURE_ROWS, k as StandardVerbId, l as StripAndRows, m as TableActionSubject, n as TableActionsInput, o as dropdownActionIds, p as dropdownActions, q as groupObjectActions, r as levelNeededFor, s as rightsReason, t as tableActions, u as tableLink, v as toDropdownEntries, w as toStripAndRows, x as whatYouMayDo, y as whatYouMayDoWithTable, z as withExtensions } from './objectActions-XkhxU-DP.js';
|
|
8
|
-
import { Uuid as Uuid$1, Table as Table$1, Field as Field$1, ReadRow as ReadRow$1, StoreFilter
|
|
9
|
-
import { TableStyle, GroupAggregateSpec, GroupOrder, ChoiceColorLookup, MatrxTableCardProps, StyleColor, MatrxDataTableDrillConfig, MatrxColumnDef as MatrxColumnDef$1, MatrxDrillDimension, MatrxDrillMeasure, MatrxDrillFilter, MatrxDrillQuestion, MatrxDrillAnswers } from '@ai-matrx/design-system/data-table';
|
|
10
|
-
import { FieldFormatConfig } from '@ai-matrx/design-system/field-formats';
|
|
8
|
+
import { Uuid as Uuid$1, Table as Table$1, Field as Field$1, ReadRow as ReadRow$1, StoreFilter, useRecordsClient } from '@ai-matrx/records/react';
|
|
11
9
|
import { RecordsClient, ParsedImport, NewFieldSpec } from '@ai-matrx/records/core';
|
|
12
10
|
export { DEFAULT_FIELDS, DeclareResult, NewFieldSpec, NewTableSpec, addFields, declareTable, fieldDeclarationFor, tokenFor } from '@ai-matrx/records/core';
|
|
11
|
+
import { FieldFormatConfig } from '@ai-matrx/design-system/field-formats';
|
|
12
|
+
import { TableStyle, GroupAggregateSpec, GroupOrder, ChoiceColorLookup, MatrxTableCardProps, StyleColor, MatrxDataTableDrillConfig, MatrxColumnDef as MatrxColumnDef$1, MatrxDrillDimension, MatrxDrillMeasure, MatrxDrillFilter, MatrxDrillQuestion, MatrxDrillAnswers } from '@ai-matrx/design-system/data-table';
|
|
13
13
|
import { GuessedFieldType, TableShape } from './table-shape.js';
|
|
14
14
|
export { ColumnGuess, FEWEST_KEY_VALUE_PAIRS, FEWEST_LIST_ITEMS, TableShapeKind, TableShapeSplit, cellWords, guessColumn, hasTableShape, parseDelimited, readTableShape, readTableShapes, shapeOfGrid, shapeOfValue, shapeTextOfNode } from './table-shape.js';
|
|
15
15
|
import { Column, Row, Values } from '@ai-matrx/records/data';
|
|
@@ -200,250 +200,6 @@ interface EnrichPanelProps {
|
|
|
200
200
|
*/
|
|
201
201
|
declare function EnrichPanel({ tableId, fieldId, className }: EnrichPanelProps): react.JSX.Element;
|
|
202
202
|
|
|
203
|
-
/**
|
|
204
|
-
* HOW A TABLE LOOKS — colors, formats and the frozen column.
|
|
205
|
-
*
|
|
206
|
-
* THE SPLIT, AND WHY IT IS THIS ONE. A Field declares WHAT it holds: a
|
|
207
|
-
* currency, a percent, a date, a person. A VIEW declares HOW that reads and
|
|
208
|
-
* what it is worth looking at: two decimal places or none, tint the row when
|
|
209
|
-
* Status is Blocked, keep Name in place while the rest scrolls. Airtable draws
|
|
210
|
-
* the line in exactly this place, and it has to be here: two people read one
|
|
211
|
-
* table two different ways, and neither reading is a fact about the records.
|
|
212
|
-
*
|
|
213
|
-
* So nothing in this module is a new column on a Field and nothing here needed
|
|
214
|
-
* a migration. A presentation lives on the saved-view record (`views.ts`), which
|
|
215
|
-
* is an ordinary record of an ordinary Table — which means an agent sets it
|
|
216
|
-
* through the same `records` tool it uses for everything else, and it travels
|
|
217
|
-
* with the table the way every other record does.
|
|
218
|
-
*
|
|
219
|
-
* A FIELD STILL GETS ITS MONEY RIGHT WITH NO CONFIGURATION. `formatForField`
|
|
220
|
-
* reads the Field's OWN declaration — a `currency` parity type with unit `$`, a
|
|
221
|
-
* `percent`, a `datetime` with `config.kind` — and returns the format that
|
|
222
|
-
* follows from it. The view's `formats` map only OVERRIDES that. A table nobody
|
|
223
|
-
* has ever styled still shows `$1,250.50` and `45%`.
|
|
224
|
-
*/
|
|
225
|
-
|
|
226
|
-
/**
|
|
227
|
-
* SECTIONS BY A FIELD — the view's own grouping.
|
|
228
|
-
*
|
|
229
|
-
* `field` is a Field KEY, exactly like `frozen` and the keys of `formats`,
|
|
230
|
-
* because a view is written against the Table's declaration and never against
|
|
231
|
-
* whatever id a screen happened to build its columns with.
|
|
232
|
-
*
|
|
233
|
-
* `aggregates` is keyed by Field key too, and `collapsed` holds the data
|
|
234
|
-
* table's own group keys (`s:Blocked`, `n:3`, `empty`), which is what the
|
|
235
|
-
* primitive emits and the only thing that survives a value rendering the same
|
|
236
|
-
* text as another.
|
|
237
|
-
*
|
|
238
|
-
* NOTHING HERE IS EVER CALLED `valueOf`, `toString` or `hasOwnProperty`: every
|
|
239
|
-
* object in JavaScript already has all three, so an optional field by one of
|
|
240
|
-
* those names is NEVER absent and a `config.valueOf ? … : …` check silently
|
|
241
|
-
* reads `Object.prototype`. It cost the primitive a whole grouping once.
|
|
242
|
-
*/
|
|
243
|
-
type GridGrouping = {
|
|
244
|
-
/** The Field key whose value makes the sections. */
|
|
245
|
-
field: string;
|
|
246
|
-
/** Per-Field-key subtotal on every section header. */
|
|
247
|
-
aggregates?: Record<string, GroupAggregateSpec>;
|
|
248
|
-
/** Section order. The primitive's default is `value-asc`; blanks sort last. */
|
|
249
|
-
order?: GroupOrder;
|
|
250
|
-
/** The sections this view keeps shut, by the primitive's own group key. */
|
|
251
|
-
collapsed?: string[];
|
|
252
|
-
/** The grouped column drawn as a column too. Absent = it steps aside (the headers name its value). */
|
|
253
|
-
showColumn?: boolean;
|
|
254
|
-
/**
|
|
255
|
-
* SUB-GROUPS (lane S1-PRIME VIEW-KEYS; ui-bench LISTS "sub-grouping"): up to two more levels
|
|
256
|
-
* inside each section, by Field key. At most three levels in all — the store refuses a fourth
|
|
257
|
-
* (`custom.view_declare`). A layout that draws one level ignores the rest; it never drops them,
|
|
258
|
-
* because this list is parsed and written back whole with the rest of the look.
|
|
259
|
-
*/
|
|
260
|
-
then?: GridSubGroup[];
|
|
261
|
-
/**
|
|
262
|
-
* DRILL (lane DRILL-TABLE-PRIMITIVE): the Dimension pivoted across the top — a Field key, or
|
|
263
|
-
* `<key>:<grain>` for a date cut into periods.
|
|
264
|
-
*/
|
|
265
|
-
across?: string;
|
|
266
|
-
/** DRILL: the period `field` is cut into when it is a date (`month`); the store keeps `field` a Field key. */
|
|
267
|
-
grain?: string;
|
|
268
|
-
/** The Measures shown ("what to display"), by the store's own keys (`count`, `sum_quantity`). */
|
|
269
|
-
show?: string[];
|
|
270
|
-
/** The drill trail, in order: each crumb a Dimension reference and the value it narrowed to. */
|
|
271
|
-
trail?: GridDrillStep[];
|
|
272
|
-
};
|
|
273
|
-
/** One crumb of a saved drill trail. `value: null` is "no value". */
|
|
274
|
-
type GridDrillStep = {
|
|
275
|
-
dim: string;
|
|
276
|
-
value: string | null;
|
|
277
|
-
};
|
|
278
|
-
/** One sub-group level: a Field key and its section order. */
|
|
279
|
-
type GridSubGroup = {
|
|
280
|
-
field: string;
|
|
281
|
-
order?: GroupOrder;
|
|
282
|
-
grain?: string;
|
|
283
|
-
};
|
|
284
|
-
/** Everything a view says about how its table LOOKS. */
|
|
285
|
-
type GridPresentation = {
|
|
286
|
-
/** Color-by-a-column, rules and manual highlights. */
|
|
287
|
-
style?: TableStyle;
|
|
288
|
-
/** Per-column format overrides, by the Field's key. */
|
|
289
|
-
formats?: Record<string, FieldFormatConfig>;
|
|
290
|
-
/**
|
|
291
|
-
* The columns that stay in place while the table scrolls sideways, by Field
|
|
292
|
-
* key. Only the LEADING run of the view's column order can actually freeze —
|
|
293
|
-
* the data table decides that, and declines rather than pinning a column at a
|
|
294
|
-
* guessed offset.
|
|
295
|
-
*/
|
|
296
|
-
frozen?: string[];
|
|
297
|
-
/** Collapsible sections by one Field, with subtotals on each header. */
|
|
298
|
-
grouping?: GridGrouping;
|
|
299
|
-
/**
|
|
300
|
-
* The width a person dragged a column to, by Field key. SPARSE on purpose —
|
|
301
|
-
* a view saved before widths existed carries none and still parses, and a
|
|
302
|
-
* column nobody resized is left to the table's own measurement.
|
|
303
|
-
*/
|
|
304
|
-
widths?: Record<string, number>;
|
|
305
|
-
/** The body row height this view remembers, in px. */
|
|
306
|
-
rowHeight?: number;
|
|
307
|
-
/**
|
|
308
|
-
* Field keys hidden from this view — the SAME hidden-column list the grid's
|
|
309
|
-
* own column picker holds, now given a place on the view so it survives a
|
|
310
|
-
* reload and a layout switch reads the identical set gallery and grid agree
|
|
311
|
-
* on, rather than a second "fields shown" list nobody kept in sync.
|
|
312
|
-
*/
|
|
313
|
-
hiddenFields?: string[];
|
|
314
|
-
/**
|
|
315
|
-
* THE FIELDS A CARD LEAVES OFF (board, list, gallery, calendar, timeline), by Field key — the
|
|
316
|
-
* card's own choice, kept apart from `hiddenFields` so a board's "Card fields" never hides the
|
|
317
|
-
* grid's columns when the view switches layout (v7 TABLE-EXPERIENCE, walk 2026-10-05). An empty
|
|
318
|
-
* list is a choice (every field shown); absent means the card never chose.
|
|
319
|
-
*/
|
|
320
|
-
cardHidden?: string[];
|
|
321
|
-
/**
|
|
322
|
-
* THE ORDER A PERSON DRAGGED THE COLUMNS INTO, by Field key (merge tranche 6a). Sparse like
|
|
323
|
-
* `widths`: a key it does not name keeps its Field's own place after the named ones, and a key
|
|
324
|
-
* whose Field is gone is skipped — a column order can never hide or invent a column.
|
|
325
|
-
*/
|
|
326
|
-
columnOrder?: string[];
|
|
327
|
-
/**
|
|
328
|
-
* The gallery's card size, remembered the same way the grid remembers its
|
|
329
|
-
* row height — a per-view look, not a global default.
|
|
330
|
-
*/
|
|
331
|
-
gallerySize?: "small" | "medium" | "large";
|
|
332
|
-
/**
|
|
333
|
-
* THIS VIEW'S OWN LAYOUT CHOICES, over the organization's `custom/grid_layout` knob (lane
|
|
334
|
-
* DEFAULT-GRID-PARITY, TABLE-PARITY D1 D5 D6). Absent means "whatever the organization
|
|
335
|
-
* says"; present is the view's word. `freezeFirst: false` is an explicit NO over an
|
|
336
|
-
* organization that freezes the first column — an empty `frozen` cannot say that.
|
|
337
|
-
*/
|
|
338
|
-
wrap?: boolean;
|
|
339
|
-
/** NOTION'S "WRAP COLUMN" (N5): the columns that wrap their text when the view as a whole does not. */
|
|
340
|
-
wrapColumns?: string[];
|
|
341
|
-
fit?: "auto" | "fit" | "scroll";
|
|
342
|
-
freezeFirst?: boolean;
|
|
343
|
-
/**
|
|
344
|
-
* THE SUMMARY BAR (TABLE-PARITY F1): Field key → the store measure shown under that column
|
|
345
|
-
* (`count`, `sum`, `avg`, `min`, `max`, `median`, `filled`, `empty`, `unique`), worked out
|
|
346
|
-
* by `custom.record_aggregate` over the whole table.
|
|
347
|
-
*/
|
|
348
|
-
summaries?: Record<string, string>;
|
|
349
|
-
/**
|
|
350
|
-
* WHERE THE FOOTER SITS (lane TABLE-PAGE-CHROME, owner 2026-09-25) — the row count and the
|
|
351
|
-
* pages: `sticky`, pinned to the bottom of the screen while the rows scroll (the older grid's
|
|
352
|
-
* way, and the default when a view says nothing), or `inline`, right after the last row with
|
|
353
|
-
* the page scrolling. Read by the Grid and a host's Sheet.
|
|
354
|
-
*/
|
|
355
|
-
footer?: FooterPlacement;
|
|
356
|
-
};
|
|
357
|
-
/** Where a grid's footer sits. */
|
|
358
|
-
type FooterPlacement = "sticky" | "inline";
|
|
359
|
-
/** What a view that says nothing gets — the older grid's pinned footer. */
|
|
360
|
-
declare const DEFAULT_FOOTER: FooterPlacement;
|
|
361
|
-
/** Where THIS view's footer sits, said or defaulted. */
|
|
362
|
-
declare function footerOf(p: GridPresentation | null | undefined): FooterPlacement;
|
|
363
|
-
declare const EMPTY_PRESENTATION: GridPresentation;
|
|
364
|
-
/** A frozen column needs a known width, or the table declines to freeze at all. */
|
|
365
|
-
declare const FROZEN_COLUMN_WIDTH = 200;
|
|
366
|
-
/**
|
|
367
|
-
* WHAT A ROW HEIGHT IS ALLOWED TO BE. Below the floor the text is clipped and
|
|
368
|
-
* no editor fits; above the ceiling one record fills the screen. A view asking
|
|
369
|
-
* for anything outside it is DROPPED rather than obeyed, because a saved look
|
|
370
|
-
* must not be able to make a table unreadable — and the Fields' own heights
|
|
371
|
-
* still draw, which is the tolerant half.
|
|
372
|
-
*/
|
|
373
|
-
declare const MIN_ROW_HEIGHT = 24;
|
|
374
|
-
declare const MAX_ROW_HEIGHT = 96;
|
|
375
|
-
/**
|
|
376
|
-
* Read a presentation out of whatever the view record holds — an object, or the
|
|
377
|
-
* JSON string a text field stores.
|
|
378
|
-
*
|
|
379
|
-
* Tolerant in exactly the way `parseTableStyle` is: an unreadable half is
|
|
380
|
-
* dropped and the rest still applies, because a table must keep drawing when
|
|
381
|
-
* one piece of its styling goes out of date.
|
|
382
|
-
*/
|
|
383
|
-
declare function parseGridPresentation(raw: unknown): GridPresentation;
|
|
384
|
-
/** True when nothing here would change how anything looks. */
|
|
385
|
-
declare function presentationIsEmpty(p: GridPresentation): boolean;
|
|
386
|
-
/** The string a view record stores. Empty string for "this view styles nothing". */
|
|
387
|
-
declare function presentationDocument(p: GridPresentation): string;
|
|
388
|
-
/**
|
|
389
|
-
* The format a Field's OWN declaration implies, before any view says anything.
|
|
390
|
-
*
|
|
391
|
-
* Returns `undefined` for a Field whose value the record renderer already draws
|
|
392
|
-
* better than a formatter could — a relation chip, a person, an attachment, a
|
|
393
|
-
* choice — because handing those to a text formatter would REPLACE a working
|
|
394
|
-
* control with a string.
|
|
395
|
-
*/
|
|
396
|
-
declare function formatForField(field: Field): FieldFormatConfig | undefined;
|
|
397
|
-
declare function currencyCodeFor(unit: string | null | undefined): string;
|
|
398
|
-
/**
|
|
399
|
-
* The color a value paints with when a view colors BY a column.
|
|
400
|
-
*
|
|
401
|
-
* NOTHING FAILS SILENTLY, so this never returns "no color" for a value that
|
|
402
|
-
* exists. The store keeps a list column's choices as records of another Table,
|
|
403
|
-
* and this grid has not read that Table's option colors, so the color is
|
|
404
|
-
* derived from the value's own text: the same word always gets the same color,
|
|
405
|
-
* different words get different ones, and `true` is green the way every
|
|
406
|
-
* checklist reads. When those option colors do land, this is the ONE function
|
|
407
|
-
* that changes and every screen follows.
|
|
408
|
-
*/
|
|
409
|
-
declare const colorFromTheValue: ChoiceColorLookup;
|
|
410
|
-
/**
|
|
411
|
-
* G1's TABLE-LEVEL COLORS (`custom.table_decorations` / `client.tableDecorations`),
|
|
412
|
-
* TRANSLATED INTO A `TableStyle` — the same document a saved view's own `presentation.style`
|
|
413
|
-
* is, so one resolver (`resolveTableStyle`, below) can treat "the table's colors" and "this
|
|
414
|
-
* view's colors" as two layers of the SAME thing instead of two unrelated systems.
|
|
415
|
-
*
|
|
416
|
-
* THE TRANSLATION IS NECESSARY AND IT IS THE ONLY ONE. G1 addresses a Field by its ID
|
|
417
|
-
* (REC-17 — a column renamed keeps its color), because it is the STORE's own door; a
|
|
418
|
-
* `TableStyle` addresses a Field by its KEY, because it reads straight off `row.document`,
|
|
419
|
-
* which is keyed by Field key. A rule or a color-by whose Field has been deleted (its id no
|
|
420
|
-
* longer resolves to a key) is dropped rather than crashing the whole style — a defect in
|
|
421
|
-
* one rule costs that rule, never the read.
|
|
422
|
-
*/
|
|
423
|
-
declare function styleFromDecorations(decorations: TableDecorations | null | undefined, fields: readonly Field[]): TableStyle;
|
|
424
|
-
/**
|
|
425
|
-
* THE ONE PRESENTATION RESOLVER every colored surface in this package reads —
|
|
426
|
-
* `Grid`, and (via `Card`) the kanban board, the calendar and the gallery.
|
|
427
|
-
*
|
|
428
|
-
* THE CLASS THIS CLOSES (lane UI-QUICK-1, TABLE-PARITY review, 2026-09-24). Threading
|
|
429
|
-
* `view.presentation.style` into `Card` closed the instance the CALENDAR-GALLERY bench
|
|
430
|
-
* found — a VIEW that had its own color-by looked right everywhere — but it left the
|
|
431
|
-
* class open: a table whose colors are the ORGANIZATION's decorations (G1's
|
|
432
|
-
* `custom.table_decorations` — "color rows by Account Type", "MAXED and NEAR rules" on
|
|
433
|
-
* Arman's own Coding Accounts table) and whose views never set a `presentation.style` of
|
|
434
|
-
* their own drew NOTHING, on the grid exactly as much as on every other layout, because
|
|
435
|
-
* nothing in this package had ever read G1's door at all.
|
|
436
|
-
*
|
|
437
|
-
* TWO LAYERS, ONE DOCUMENT. The table's decorations are the base coat — what every view
|
|
438
|
-
* of this table shows until a view says otherwise. A view's OWN `presentation.style` is
|
|
439
|
-
* an override, piece by piece: a view that only ever set manual row highlights still
|
|
440
|
-
* inherits the table's color-by and rules for everything it never touched, and a view
|
|
441
|
-
* that fully redecorated (its own `colorBy` AND its own `rules`) is not haunted by a
|
|
442
|
-
* table rule it meant to replace. Per-piece, never all-or-nothing, because a view is a
|
|
443
|
-
* LOOK on top of the table, not a wholesale substitute for it.
|
|
444
|
-
*/
|
|
445
|
-
declare function resolveTableStyle(decorations: TableDecorations | null | undefined, fields: readonly Field[], viewStyle: TableStyle | undefined): TableStyle;
|
|
446
|
-
|
|
447
203
|
/** One record as the grid shows it: its id, its name (the row label) and its masked document. */
|
|
448
204
|
interface GridContextRecord {
|
|
449
205
|
id: Uuid;
|
|
@@ -551,45 +307,6 @@ declare const NO_RIGHTS: TableRights;
|
|
|
551
307
|
* ladder cannot produce (write without read, share without edit).
|
|
552
308
|
*/
|
|
553
309
|
declare function tableRightsAt(level: PermissionLevel | null): TableRights;
|
|
554
|
-
/**
|
|
555
|
-
* A LAYOUT THE HOST DRAWS, beside the package's own four (Grid, Kanban, Calendar,
|
|
556
|
-
* Gallery) in the SAME layout row of every table page. The host owns what it
|
|
557
|
-
* draws; the package owns where it sits, its button, and its address (`?view=<id>`).
|
|
558
|
-
*
|
|
559
|
-
* WHY A PORT: an app with a richer surface for one kind of looking at a table —
|
|
560
|
-
* AI Matrx's spreadsheet-feel Sheet, the older /data grid ported onto the record
|
|
561
|
-
* store — must be a layout of the one table page, never a second page for the
|
|
562
|
-
* same table. It is page-level, not saved onto the view record: the store's
|
|
563
|
-
* layout words are the four the package draws.
|
|
564
|
-
*/
|
|
565
|
-
interface HostLayout {
|
|
566
|
-
/** The address word (`?view=sheet`). Lowercase; must not be one of the package's own. */
|
|
567
|
-
id: string;
|
|
568
|
-
/** The button's words. */
|
|
569
|
-
label: string;
|
|
570
|
-
/** Draw it for this table, with the question the address asked when there is one. */
|
|
571
|
-
render: (args: {
|
|
572
|
-
tableId: Uuid;
|
|
573
|
-
filter?: StoreFilter | undefined;
|
|
574
|
-
/**
|
|
575
|
-
* Opens the page's own export (CSV, XLSX, copy and transform) — the one export a table has,
|
|
576
|
-
* so a host layout's "Export this table…" never needs a second one or a hunt for a button.
|
|
577
|
-
* Absent on a page that draws no export.
|
|
578
|
-
*/
|
|
579
|
-
openExport?: (() => void) | undefined;
|
|
580
|
-
/**
|
|
581
|
-
* Where the view's footer sits (lane TABLE-PAGE-CHROME): `sticky` — fill the height given and
|
|
582
|
-
* keep the counts and pages on the bottom edge; `inline` — after the last row.
|
|
583
|
-
*/
|
|
584
|
-
footer?: FooterPlacement | undefined;
|
|
585
|
-
/**
|
|
586
|
-
* THE PAGE'S ONE TOOLBAR ROW (lane TABLE-PAGE-CHROME). A host layout with controls of its own
|
|
587
|
-
* (search, columns, sort) draws them INTO this element — never a second bar under the page's.
|
|
588
|
-
* `null`: the row is mounting (draw nothing yet). Absent: no page row, draw in place.
|
|
589
|
-
*/
|
|
590
|
-
toolbarSlot?: HTMLElement | null | undefined;
|
|
591
|
-
}) => ReactNode;
|
|
592
|
-
}
|
|
593
310
|
/**
|
|
594
311
|
* The authored-text slots `renderText` is asked to draw. `cell`: a long-text cell of the merged
|
|
595
312
|
* grid and the whole-text dialog's preview — the host may return block content there (the grid
|
|
@@ -636,8 +353,6 @@ interface RecordsUiHost {
|
|
|
636
353
|
* merge step 9, when `merged` is the only grid.
|
|
637
354
|
*/
|
|
638
355
|
grid?: "classic" | "merged";
|
|
639
|
-
/** Layouts the host draws beside the package's own. See `HostLayout`. */
|
|
640
|
-
layouts?: HostLayout[];
|
|
641
356
|
/**
|
|
642
357
|
* OPTIONAL. CLEAN A PASTED PIECE OF HTML INTO PLAIN TEXT (merge tranche 6m, inventory A7).
|
|
643
358
|
*
|
|
@@ -1651,133 +1366,377 @@ interface Options {
|
|
|
1651
1366
|
* the merged grid's undo pushes one step per accepted cell. Unbound, nothing is told.
|
|
1652
1367
|
*/
|
|
1653
1368
|
/**
|
|
1654
|
-
* The grid's one versions-at-load source (`useRecordVersions`), shared with its paste, fill, bulk and
|
|
1655
|
-
* undo. Unbound, the session keeps its own over `rows`.
|
|
1369
|
+
* The grid's one versions-at-load source (`useRecordVersions`), shared with its paste, fill, bulk and
|
|
1370
|
+
* undo. Unbound, the session keeps its own over `rows`.
|
|
1371
|
+
*/
|
|
1372
|
+
versions?: RecordVersions | undefined;
|
|
1373
|
+
/** One cell the store took: its value before and after, and the record version that write made. */
|
|
1374
|
+
onWritten?: ((write: {
|
|
1375
|
+
rowId: Uuid;
|
|
1376
|
+
key: string;
|
|
1377
|
+
before: unknown;
|
|
1378
|
+
after: unknown;
|
|
1379
|
+
version?: number;
|
|
1380
|
+
}) => void) | undefined;
|
|
1381
|
+
/**
|
|
1382
|
+
* THE GRID GETS ITS KEYS BACK (merged-grid review 2026-09-26, A1). Bound, an editor that closes
|
|
1383
|
+
* by a key or a pick says so — Enter `down`, Tab `right` (Shift-Tab `left`), Escape and a pick
|
|
1384
|
+
* `stay` — and Tab no longer opens the next cell's editor: it commits and the CURSOR moves right,
|
|
1385
|
+
* as in Sheets and Airtable. A blur (a click elsewhere) says nothing: the click has the focus.
|
|
1386
|
+
* Unbound (the classic grid), Tab chains editors as before.
|
|
1387
|
+
*/
|
|
1388
|
+
onEnded?: ((exit: "down" | "right" | "left" | "stay", from: CellAddress, how: "keyboard" | "pointer") => void) | undefined;
|
|
1389
|
+
}
|
|
1390
|
+
/** How an open cell was closed: a key (Enter, Tab, Escape), the picker's own close, or a blur. */
|
|
1391
|
+
type EditVia = "key" | "pick" | "blur";
|
|
1392
|
+
declare function useGridEditing({ tableId, fields, rows, reload, reloadAfterWrite, canWrite, mayWriteRow, onWritten, onEnded, versions: shared }: Options): GridEditing;
|
|
1393
|
+
/**
|
|
1394
|
+
* ONE CELL. Read, until somebody asks to change it; then the Field's own
|
|
1395
|
+
* editor, in place, with the keys a person expects from a grid.
|
|
1396
|
+
*
|
|
1397
|
+
* `data-matrx-cell-control` is the data table's own opt-out from whole-row
|
|
1398
|
+
* click, so opening a cell never also opens the record panel behind it.
|
|
1399
|
+
*/
|
|
1400
|
+
declare function GridCell({ field, row, editing, canWrite, whyNot, format, onAskWhoChanged, clickOpens, }: {
|
|
1401
|
+
field: Field;
|
|
1402
|
+
row: ReadRow;
|
|
1403
|
+
/**
|
|
1404
|
+
* ONE CLICK OPENS THE EDITOR (a record page, Notion's property list: lane CELL-EDITORS, night walk
|
|
1405
|
+
* 2026-10-06). A grid selects on a click and opens on the second; a record page has no cursor, so a
|
|
1406
|
+
* click on any value — a chip included, which then opens its picker rather than its record — edits it.
|
|
1407
|
+
*/
|
|
1408
|
+
clickOpens?: boolean | undefined;
|
|
1409
|
+
/**
|
|
1410
|
+
* The edit session, or NULL on a cell nobody may edit.
|
|
1411
|
+
*
|
|
1412
|
+
* 🚨 Null is not "do not render me". "Who changed this?" is a READING
|
|
1413
|
+
* question — the person who may not edit a cell is exactly the person who
|
|
1414
|
+
* wants to know who did — and the cell used to disappear entirely the moment
|
|
1415
|
+
* editing was off, taking the control with it while this file's own comments
|
|
1416
|
+
* claimed it was offered at viewer. A null session means no editor, nothing
|
|
1417
|
+
* else.
|
|
1418
|
+
*/
|
|
1419
|
+
editing: GridEditing | null;
|
|
1420
|
+
/** Whether this person may write THIS row. Asked before the cell is drawn. */
|
|
1421
|
+
canWrite: boolean;
|
|
1422
|
+
/**
|
|
1423
|
+
* Why not, when not — one sentence naming the level it would take and who can
|
|
1424
|
+
* give it. A cell that is simply not a control, with nothing to say about it,
|
|
1425
|
+
* is the silent half of the same defect this file closes.
|
|
1426
|
+
*/
|
|
1427
|
+
whyNot?: string | undefined;
|
|
1428
|
+
/** The column's declared format, so the read view reads like its header. */
|
|
1429
|
+
format?: FieldFormatConfig | undefined;
|
|
1430
|
+
/**
|
|
1431
|
+
* "WHO CHANGED THIS?" — the question a person asks of the CELL they are
|
|
1432
|
+
* looking at. Bound by the host; absent, no control is drawn at all, because
|
|
1433
|
+
* a control that opens nothing is the thing this package exists to prevent.
|
|
1434
|
+
*/
|
|
1435
|
+
onAskWhoChanged?: ((fieldKey: string, recordId: Uuid) => void) | undefined;
|
|
1436
|
+
}): react.JSX.Element;
|
|
1437
|
+
|
|
1438
|
+
/**
|
|
1439
|
+
* Kept for callers outside this package that already ask the question. The
|
|
1440
|
+
* answer is `plainWords.ts`'s, so there is one shape list and not two.
|
|
1441
|
+
*/
|
|
1442
|
+
declare function hintIsMachineIdentity(hint: string): boolean;
|
|
1443
|
+
/** The hint a PERSON should read, or null when it is written for an engineer. */
|
|
1444
|
+
declare function hintForAPerson(hint: string | null | undefined): string | null;
|
|
1445
|
+
declare function RefusalNotice({ error, className, actions, onKeepEditing, onDiscard, }: {
|
|
1446
|
+
error: RecordsError;
|
|
1447
|
+
className?: string | undefined;
|
|
1448
|
+
actions?: ReactNode | undefined;
|
|
1449
|
+
/**
|
|
1450
|
+
* KEEP EDITING / DISCARD (lane REFUSAL-SWEEP, 2026-09-23). Pass these ONLY where
|
|
1451
|
+
* an editor is open holding what the person typed and the refusal is about that
|
|
1452
|
+
* text: the notice then owns the two doors out, so the notice — never a clock —
|
|
1453
|
+
* decides how long the typed text is kept. Keep editing hands the person back
|
|
1454
|
+
* to their text; Discard throws it away and puts back what was there. A surface
|
|
1455
|
+
* with nothing typed to keep passes neither and gets no buttons.
|
|
1456
|
+
*/
|
|
1457
|
+
onKeepEditing?: (() => void) | undefined;
|
|
1458
|
+
onDiscard?: (() => void) | undefined;
|
|
1459
|
+
}): react.JSX.Element;
|
|
1460
|
+
/** A small inline one, for a cell or a field where a block would break the layout. */
|
|
1461
|
+
declare function RefusalLine({ error, className }: {
|
|
1462
|
+
error: RecordsError;
|
|
1463
|
+
className?: string | undefined;
|
|
1464
|
+
}): react.JSX.Element;
|
|
1465
|
+
|
|
1466
|
+
/**
|
|
1467
|
+
* A refusal in this package's own words.
|
|
1468
|
+
*
|
|
1469
|
+
* @param code what KIND of refusal — picks the notice's title and its fallback remedy.
|
|
1470
|
+
* @param sentence what happened, for a person.
|
|
1471
|
+
* @param remedy what to do now, when this call site knows better than the code's default.
|
|
1472
|
+
* @param diagnostic an engineer's note (a thrown message, a status) — rendered out of sight.
|
|
1473
|
+
*/
|
|
1474
|
+
declare function refusal(code: RecordsErrorCode, sentence: string, remedy?: string | null, diagnostic?: string | null): RecordsError;
|
|
1475
|
+
/**
|
|
1476
|
+
* A refusal made from something THROWN in the browser. The thrown text is an
|
|
1477
|
+
* engineer's (a parser's "Unexpected token } in JSON at position 14", a
|
|
1478
|
+
* library's stack) and goes out of sight; the person reads `sentence`.
|
|
1479
|
+
*/
|
|
1480
|
+
declare function refusalFromThrown(thrown: unknown, sentence: string, remedy?: string | null, code?: RecordsErrorCode): RecordsError;
|
|
1481
|
+
/**
|
|
1482
|
+
* The store's refusal when there is one, otherwise this package's own sentence —
|
|
1483
|
+
* for the call sites whose answer MAY carry an error (`res.error?.message ?? "…"`
|
|
1484
|
+
* was the old shape, and it printed the store's message raw).
|
|
1485
|
+
*/
|
|
1486
|
+
declare function refusalOr(error: RecordsError | null | undefined, code: RecordsErrorCode, sentence: string): RecordsError;
|
|
1487
|
+
/**
|
|
1488
|
+
* Whatever a host callback threw, as a refusal: the store's own `RecordsError`
|
|
1489
|
+
* when that is what arrived (it is drawn with its own words and remedy), and
|
|
1490
|
+
* otherwise `refusalFromThrown` — the thrown text out of sight, `sentence` in view.
|
|
1491
|
+
*/
|
|
1492
|
+
declare function asRefusal(thrown: unknown, sentence: string, remedy?: string | null, code?: RecordsErrorCode): RecordsError;
|
|
1493
|
+
|
|
1494
|
+
/**
|
|
1495
|
+
* HOW A TABLE LOOKS — colors, formats and the frozen column.
|
|
1496
|
+
*
|
|
1497
|
+
* THE SPLIT, AND WHY IT IS THIS ONE. A Field declares WHAT it holds: a
|
|
1498
|
+
* currency, a percent, a date, a person. A VIEW declares HOW that reads and
|
|
1499
|
+
* what it is worth looking at: two decimal places or none, tint the row when
|
|
1500
|
+
* Status is Blocked, keep Name in place while the rest scrolls. Airtable draws
|
|
1501
|
+
* the line in exactly this place, and it has to be here: two people read one
|
|
1502
|
+
* table two different ways, and neither reading is a fact about the records.
|
|
1503
|
+
*
|
|
1504
|
+
* So nothing in this module is a new column on a Field and nothing here needed
|
|
1505
|
+
* a migration. A presentation lives on the saved-view record (`views.ts`), which
|
|
1506
|
+
* is an ordinary record of an ordinary Table — which means an agent sets it
|
|
1507
|
+
* through the same `records` tool it uses for everything else, and it travels
|
|
1508
|
+
* with the table the way every other record does.
|
|
1509
|
+
*
|
|
1510
|
+
* A FIELD STILL GETS ITS MONEY RIGHT WITH NO CONFIGURATION. `formatForField`
|
|
1511
|
+
* reads the Field's OWN declaration — a `currency` parity type with unit `$`, a
|
|
1512
|
+
* `percent`, a `datetime` with `config.kind` — and returns the format that
|
|
1513
|
+
* follows from it. The view's `formats` map only OVERRIDES that. A table nobody
|
|
1514
|
+
* has ever styled still shows `$1,250.50` and `45%`.
|
|
1515
|
+
*/
|
|
1516
|
+
|
|
1517
|
+
/**
|
|
1518
|
+
* SECTIONS BY A FIELD — the view's own grouping.
|
|
1519
|
+
*
|
|
1520
|
+
* `field` is a Field KEY, exactly like `frozen` and the keys of `formats`,
|
|
1521
|
+
* because a view is written against the Table's declaration and never against
|
|
1522
|
+
* whatever id a screen happened to build its columns with.
|
|
1523
|
+
*
|
|
1524
|
+
* `aggregates` is keyed by Field key too, and `collapsed` holds the data
|
|
1525
|
+
* table's own group keys (`s:Blocked`, `n:3`, `empty`), which is what the
|
|
1526
|
+
* primitive emits and the only thing that survives a value rendering the same
|
|
1527
|
+
* text as another.
|
|
1528
|
+
*
|
|
1529
|
+
* NOTHING HERE IS EVER CALLED `valueOf`, `toString` or `hasOwnProperty`: every
|
|
1530
|
+
* object in JavaScript already has all three, so an optional field by one of
|
|
1531
|
+
* those names is NEVER absent and a `config.valueOf ? … : …` check silently
|
|
1532
|
+
* reads `Object.prototype`. It cost the primitive a whole grouping once.
|
|
1533
|
+
*/
|
|
1534
|
+
type GridGrouping = {
|
|
1535
|
+
/** The Field key whose value makes the sections. */
|
|
1536
|
+
field: string;
|
|
1537
|
+
/** Per-Field-key subtotal on every section header. */
|
|
1538
|
+
aggregates?: Record<string, GroupAggregateSpec>;
|
|
1539
|
+
/** Section order. The primitive's default is `value-asc`; blanks sort last. */
|
|
1540
|
+
order?: GroupOrder;
|
|
1541
|
+
/** The sections this view keeps shut, by the primitive's own group key. */
|
|
1542
|
+
collapsed?: string[];
|
|
1543
|
+
/** The grouped column drawn as a column too. Absent = it steps aside (the headers name its value). */
|
|
1544
|
+
showColumn?: boolean;
|
|
1545
|
+
/**
|
|
1546
|
+
* SUB-GROUPS (lane S1-PRIME VIEW-KEYS; ui-bench LISTS "sub-grouping"): up to two more levels
|
|
1547
|
+
* inside each section, by Field key. At most three levels in all — the store refuses a fourth
|
|
1548
|
+
* (`custom.view_declare`). A layout that draws one level ignores the rest; it never drops them,
|
|
1549
|
+
* because this list is parsed and written back whole with the rest of the look.
|
|
1550
|
+
*/
|
|
1551
|
+
then?: GridSubGroup[];
|
|
1552
|
+
/**
|
|
1553
|
+
* DRILL (lane DRILL-TABLE-PRIMITIVE): the Dimension pivoted across the top — a Field key, or
|
|
1554
|
+
* `<key>:<grain>` for a date cut into periods.
|
|
1555
|
+
*/
|
|
1556
|
+
across?: string;
|
|
1557
|
+
/** DRILL: the period `field` is cut into when it is a date (`month`); the store keeps `field` a Field key. */
|
|
1558
|
+
grain?: string;
|
|
1559
|
+
/** The Measures shown ("what to display"), by the store's own keys (`count`, `sum_quantity`). */
|
|
1560
|
+
show?: string[];
|
|
1561
|
+
/** The drill trail, in order: each crumb a Dimension reference and the value it narrowed to. */
|
|
1562
|
+
trail?: GridDrillStep[];
|
|
1563
|
+
};
|
|
1564
|
+
/** One crumb of a saved drill trail. `value: null` is "no value". */
|
|
1565
|
+
type GridDrillStep = {
|
|
1566
|
+
dim: string;
|
|
1567
|
+
value: string | null;
|
|
1568
|
+
};
|
|
1569
|
+
/** One sub-group level: a Field key and its section order. */
|
|
1570
|
+
type GridSubGroup = {
|
|
1571
|
+
field: string;
|
|
1572
|
+
order?: GroupOrder;
|
|
1573
|
+
grain?: string;
|
|
1574
|
+
};
|
|
1575
|
+
/** Everything a view says about how its table LOOKS. */
|
|
1576
|
+
type GridPresentation = {
|
|
1577
|
+
/** Color-by-a-column, rules and manual highlights. */
|
|
1578
|
+
style?: TableStyle;
|
|
1579
|
+
/** Per-column format overrides, by the Field's key. */
|
|
1580
|
+
formats?: Record<string, FieldFormatConfig>;
|
|
1581
|
+
/**
|
|
1582
|
+
* The columns that stay in place while the table scrolls sideways, by Field
|
|
1583
|
+
* key. Only the LEADING run of the view's column order can actually freeze —
|
|
1584
|
+
* the data table decides that, and declines rather than pinning a column at a
|
|
1585
|
+
* guessed offset.
|
|
1586
|
+
*/
|
|
1587
|
+
frozen?: string[];
|
|
1588
|
+
/** Collapsible sections by one Field, with subtotals on each header. */
|
|
1589
|
+
grouping?: GridGrouping;
|
|
1590
|
+
/**
|
|
1591
|
+
* The width a person dragged a column to, by Field key. SPARSE on purpose —
|
|
1592
|
+
* a view saved before widths existed carries none and still parses, and a
|
|
1593
|
+
* column nobody resized is left to the table's own measurement.
|
|
1594
|
+
*/
|
|
1595
|
+
widths?: Record<string, number>;
|
|
1596
|
+
/** The body row height this view remembers, in px. */
|
|
1597
|
+
rowHeight?: number;
|
|
1598
|
+
/**
|
|
1599
|
+
* Field keys hidden from this view — the SAME hidden-column list the grid's
|
|
1600
|
+
* own column picker holds, now given a place on the view so it survives a
|
|
1601
|
+
* reload and a layout switch reads the identical set gallery and grid agree
|
|
1602
|
+
* on, rather than a second "fields shown" list nobody kept in sync.
|
|
1603
|
+
*/
|
|
1604
|
+
hiddenFields?: string[];
|
|
1605
|
+
/**
|
|
1606
|
+
* THE FIELDS A CARD LEAVES OFF (board, list, gallery, calendar, timeline), by Field key — the
|
|
1607
|
+
* card's own choice, kept apart from `hiddenFields` so a board's "Card fields" never hides the
|
|
1608
|
+
* grid's columns when the view switches layout (v7 TABLE-EXPERIENCE, walk 2026-10-05). An empty
|
|
1609
|
+
* list is a choice (every field shown); absent means the card never chose.
|
|
1656
1610
|
*/
|
|
1657
|
-
|
|
1658
|
-
/** One cell the store took: its value before and after, and the record version that write made. */
|
|
1659
|
-
onWritten?: ((write: {
|
|
1660
|
-
rowId: Uuid;
|
|
1661
|
-
key: string;
|
|
1662
|
-
before: unknown;
|
|
1663
|
-
after: unknown;
|
|
1664
|
-
version?: number;
|
|
1665
|
-
}) => void) | undefined;
|
|
1611
|
+
cardHidden?: string[];
|
|
1666
1612
|
/**
|
|
1667
|
-
* THE
|
|
1668
|
-
*
|
|
1669
|
-
*
|
|
1670
|
-
* as in Sheets and Airtable. A blur (a click elsewhere) says nothing: the click has the focus.
|
|
1671
|
-
* Unbound (the classic grid), Tab chains editors as before.
|
|
1613
|
+
* THE ORDER A PERSON DRAGGED THE COLUMNS INTO, by Field key (merge tranche 6a). Sparse like
|
|
1614
|
+
* `widths`: a key it does not name keeps its Field's own place after the named ones, and a key
|
|
1615
|
+
* whose Field is gone is skipped — a column order can never hide or invent a column.
|
|
1672
1616
|
*/
|
|
1673
|
-
|
|
1674
|
-
}
|
|
1675
|
-
/** How an open cell was closed: a key (Enter, Tab, Escape), the picker's own close, or a blur. */
|
|
1676
|
-
type EditVia = "key" | "pick" | "blur";
|
|
1677
|
-
declare function useGridEditing({ tableId, fields, rows, reload, reloadAfterWrite, canWrite, mayWriteRow, onWritten, onEnded, versions: shared }: Options): GridEditing;
|
|
1678
|
-
/**
|
|
1679
|
-
* ONE CELL. Read, until somebody asks to change it; then the Field's own
|
|
1680
|
-
* editor, in place, with the keys a person expects from a grid.
|
|
1681
|
-
*
|
|
1682
|
-
* `data-matrx-cell-control` is the data table's own opt-out from whole-row
|
|
1683
|
-
* click, so opening a cell never also opens the record panel behind it.
|
|
1684
|
-
*/
|
|
1685
|
-
declare function GridCell({ field, row, editing, canWrite, whyNot, format, onAskWhoChanged, clickOpens, }: {
|
|
1686
|
-
field: Field;
|
|
1687
|
-
row: ReadRow;
|
|
1617
|
+
columnOrder?: string[];
|
|
1688
1618
|
/**
|
|
1689
|
-
*
|
|
1690
|
-
*
|
|
1691
|
-
* click on any value — a chip included, which then opens its picker rather than its record — edits it.
|
|
1619
|
+
* The gallery's card size, remembered the same way the grid remembers its
|
|
1620
|
+
* row height — a per-view look, not a global default.
|
|
1692
1621
|
*/
|
|
1693
|
-
|
|
1622
|
+
gallerySize?: "small" | "medium" | "large";
|
|
1694
1623
|
/**
|
|
1695
|
-
*
|
|
1696
|
-
*
|
|
1697
|
-
*
|
|
1698
|
-
*
|
|
1699
|
-
* wants to know who did — and the cell used to disappear entirely the moment
|
|
1700
|
-
* editing was off, taking the control with it while this file's own comments
|
|
1701
|
-
* claimed it was offered at viewer. A null session means no editor, nothing
|
|
1702
|
-
* else.
|
|
1624
|
+
* THIS VIEW'S OWN LAYOUT CHOICES, over the organization's `custom/grid_layout` knob (lane
|
|
1625
|
+
* DEFAULT-GRID-PARITY, TABLE-PARITY D1 D5 D6). Absent means "whatever the organization
|
|
1626
|
+
* says"; present is the view's word. `freezeFirst: false` is an explicit NO over an
|
|
1627
|
+
* organization that freezes the first column — an empty `frozen` cannot say that.
|
|
1703
1628
|
*/
|
|
1704
|
-
|
|
1705
|
-
/**
|
|
1706
|
-
|
|
1629
|
+
wrap?: boolean;
|
|
1630
|
+
/** NOTION'S "WRAP COLUMN" (N5): the columns that wrap their text when the view as a whole does not. */
|
|
1631
|
+
wrapColumns?: string[];
|
|
1632
|
+
fit?: "auto" | "fit" | "scroll";
|
|
1633
|
+
freezeFirst?: boolean;
|
|
1707
1634
|
/**
|
|
1708
|
-
*
|
|
1709
|
-
*
|
|
1710
|
-
*
|
|
1635
|
+
* THE SUMMARY BAR (TABLE-PARITY F1): Field key → the store measure shown under that column
|
|
1636
|
+
* (`count`, `sum`, `avg`, `min`, `max`, `median`, `filled`, `empty`, `unique`), worked out
|
|
1637
|
+
* by `custom.record_aggregate` over the whole table.
|
|
1711
1638
|
*/
|
|
1712
|
-
|
|
1713
|
-
/** The column's declared format, so the read view reads like its header. */
|
|
1714
|
-
format?: FieldFormatConfig | undefined;
|
|
1639
|
+
summaries?: Record<string, string>;
|
|
1715
1640
|
/**
|
|
1716
|
-
*
|
|
1717
|
-
*
|
|
1718
|
-
* a
|
|
1641
|
+
* WHERE THE FOOTER SITS (lane TABLE-PAGE-CHROME, owner 2026-09-25) — the row count and the
|
|
1642
|
+
* pages: `sticky`, pinned to the bottom of the screen while the rows scroll (the older grid's
|
|
1643
|
+
* way, and the default when a view says nothing), or `inline`, right after the last row with
|
|
1644
|
+
* the page scrolling. Read by the Grid and a host's Sheet.
|
|
1719
1645
|
*/
|
|
1720
|
-
|
|
1721
|
-
}
|
|
1722
|
-
|
|
1646
|
+
footer?: FooterPlacement;
|
|
1647
|
+
};
|
|
1648
|
+
/** Where a grid's footer sits. */
|
|
1649
|
+
type FooterPlacement = "sticky" | "inline";
|
|
1650
|
+
/** What a view that says nothing gets — the older grid's pinned footer. */
|
|
1651
|
+
declare const DEFAULT_FOOTER: FooterPlacement;
|
|
1652
|
+
/** Where THIS view's footer sits, said or defaulted. */
|
|
1653
|
+
declare function footerOf(p: GridPresentation | null | undefined): FooterPlacement;
|
|
1654
|
+
declare const EMPTY_PRESENTATION: GridPresentation;
|
|
1655
|
+
/** A frozen column needs a known width, or the table declines to freeze at all. */
|
|
1656
|
+
declare const FROZEN_COLUMN_WIDTH = 200;
|
|
1723
1657
|
/**
|
|
1724
|
-
*
|
|
1725
|
-
*
|
|
1658
|
+
* WHAT A ROW HEIGHT IS ALLOWED TO BE. Below the floor the text is clipped and
|
|
1659
|
+
* no editor fits; above the ceiling one record fills the screen. A view asking
|
|
1660
|
+
* for anything outside it is DROPPED rather than obeyed, because a saved look
|
|
1661
|
+
* must not be able to make a table unreadable — and the Fields' own heights
|
|
1662
|
+
* still draw, which is the tolerant half.
|
|
1726
1663
|
*/
|
|
1727
|
-
declare
|
|
1728
|
-
|
|
1729
|
-
declare function hintForAPerson(hint: string | null | undefined): string | null;
|
|
1730
|
-
declare function RefusalNotice({ error, className, actions, onKeepEditing, onDiscard, }: {
|
|
1731
|
-
error: RecordsError;
|
|
1732
|
-
className?: string | undefined;
|
|
1733
|
-
actions?: ReactNode | undefined;
|
|
1734
|
-
/**
|
|
1735
|
-
* KEEP EDITING / DISCARD (lane REFUSAL-SWEEP, 2026-09-23). Pass these ONLY where
|
|
1736
|
-
* an editor is open holding what the person typed and the refusal is about that
|
|
1737
|
-
* text: the notice then owns the two doors out, so the notice — never a clock —
|
|
1738
|
-
* decides how long the typed text is kept. Keep editing hands the person back
|
|
1739
|
-
* to their text; Discard throws it away and puts back what was there. A surface
|
|
1740
|
-
* with nothing typed to keep passes neither and gets no buttons.
|
|
1741
|
-
*/
|
|
1742
|
-
onKeepEditing?: (() => void) | undefined;
|
|
1743
|
-
onDiscard?: (() => void) | undefined;
|
|
1744
|
-
}): react.JSX.Element;
|
|
1745
|
-
/** A small inline one, for a cell or a field where a block would break the layout. */
|
|
1746
|
-
declare function RefusalLine({ error, className }: {
|
|
1747
|
-
error: RecordsError;
|
|
1748
|
-
className?: string | undefined;
|
|
1749
|
-
}): react.JSX.Element;
|
|
1750
|
-
|
|
1664
|
+
declare const MIN_ROW_HEIGHT = 24;
|
|
1665
|
+
declare const MAX_ROW_HEIGHT = 96;
|
|
1751
1666
|
/**
|
|
1752
|
-
*
|
|
1667
|
+
* Read a presentation out of whatever the view record holds — an object, or the
|
|
1668
|
+
* JSON string a text field stores.
|
|
1753
1669
|
*
|
|
1754
|
-
*
|
|
1755
|
-
*
|
|
1756
|
-
*
|
|
1757
|
-
* @param diagnostic an engineer's note (a thrown message, a status) — rendered out of sight.
|
|
1670
|
+
* Tolerant in exactly the way `parseTableStyle` is: an unreadable half is
|
|
1671
|
+
* dropped and the rest still applies, because a table must keep drawing when
|
|
1672
|
+
* one piece of its styling goes out of date.
|
|
1758
1673
|
*/
|
|
1759
|
-
declare function
|
|
1674
|
+
declare function parseGridPresentation(raw: unknown): GridPresentation;
|
|
1675
|
+
/** True when nothing here would change how anything looks. */
|
|
1676
|
+
declare function presentationIsEmpty(p: GridPresentation): boolean;
|
|
1677
|
+
/** The string a view record stores. Empty string for "this view styles nothing". */
|
|
1678
|
+
declare function presentationDocument(p: GridPresentation): string;
|
|
1760
1679
|
/**
|
|
1761
|
-
*
|
|
1762
|
-
*
|
|
1763
|
-
*
|
|
1680
|
+
* The format a Field's OWN declaration implies, before any view says anything.
|
|
1681
|
+
*
|
|
1682
|
+
* Returns `undefined` for a Field whose value the record renderer already draws
|
|
1683
|
+
* better than a formatter could — a relation chip, a person, an attachment, a
|
|
1684
|
+
* choice — because handing those to a text formatter would REPLACE a working
|
|
1685
|
+
* control with a string.
|
|
1764
1686
|
*/
|
|
1765
|
-
declare function
|
|
1687
|
+
declare function formatForField(field: Field): FieldFormatConfig | undefined;
|
|
1688
|
+
declare function currencyCodeFor(unit: string | null | undefined): string;
|
|
1766
1689
|
/**
|
|
1767
|
-
* The
|
|
1768
|
-
*
|
|
1769
|
-
*
|
|
1690
|
+
* The color a value paints with when a view colors BY a column.
|
|
1691
|
+
*
|
|
1692
|
+
* NOTHING FAILS SILENTLY, so this never returns "no color" for a value that
|
|
1693
|
+
* exists. The store keeps a list column's choices as records of another Table,
|
|
1694
|
+
* and this grid has not read that Table's option colors, so the color is
|
|
1695
|
+
* derived from the value's own text: the same word always gets the same color,
|
|
1696
|
+
* different words get different ones, and `true` is green the way every
|
|
1697
|
+
* checklist reads. When those option colors do land, this is the ONE function
|
|
1698
|
+
* that changes and every screen follows.
|
|
1770
1699
|
*/
|
|
1771
|
-
declare
|
|
1700
|
+
declare const colorFromTheValue: ChoiceColorLookup;
|
|
1772
1701
|
/**
|
|
1773
|
-
*
|
|
1774
|
-
*
|
|
1775
|
-
*
|
|
1702
|
+
* G1's TABLE-LEVEL COLORS (`custom.table_decorations` / `client.tableDecorations`),
|
|
1703
|
+
* TRANSLATED INTO A `TableStyle` — the same document a saved view's own `presentation.style`
|
|
1704
|
+
* is, so one resolver (`resolveTableStyle`, below) can treat "the table's colors" and "this
|
|
1705
|
+
* view's colors" as two layers of the SAME thing instead of two unrelated systems.
|
|
1706
|
+
*
|
|
1707
|
+
* THE TRANSLATION IS NECESSARY AND IT IS THE ONLY ONE. G1 addresses a Field by its ID
|
|
1708
|
+
* (REC-17 — a column renamed keeps its color), because it is the STORE's own door; a
|
|
1709
|
+
* `TableStyle` addresses a Field by its KEY, because it reads straight off `row.document`,
|
|
1710
|
+
* which is keyed by Field key. A rule or a color-by whose Field has been deleted (its id no
|
|
1711
|
+
* longer resolves to a key) is dropped rather than crashing the whole style — a defect in
|
|
1712
|
+
* one rule costs that rule, never the read.
|
|
1776
1713
|
*/
|
|
1777
|
-
declare function
|
|
1714
|
+
declare function styleFromDecorations(decorations: TableDecorations | null | undefined, fields: readonly Field[]): TableStyle;
|
|
1715
|
+
/**
|
|
1716
|
+
* THE ONE PRESENTATION RESOLVER every colored surface in this package reads —
|
|
1717
|
+
* `Grid`, and (via `Card`) the kanban board, the calendar and the gallery.
|
|
1718
|
+
*
|
|
1719
|
+
* THE CLASS THIS CLOSES (lane UI-QUICK-1, TABLE-PARITY review, 2026-09-24). Threading
|
|
1720
|
+
* `view.presentation.style` into `Card` closed the instance the CALENDAR-GALLERY bench
|
|
1721
|
+
* found — a VIEW that had its own color-by looked right everywhere — but it left the
|
|
1722
|
+
* class open: a table whose colors are the ORGANIZATION's decorations (G1's
|
|
1723
|
+
* `custom.table_decorations` — "color rows by Account Type", "MAXED and NEAR rules" on
|
|
1724
|
+
* Arman's own Coding Accounts table) and whose views never set a `presentation.style` of
|
|
1725
|
+
* their own drew NOTHING, on the grid exactly as much as on every other layout, because
|
|
1726
|
+
* nothing in this package had ever read G1's door at all.
|
|
1727
|
+
*
|
|
1728
|
+
* TWO LAYERS, ONE DOCUMENT. The table's decorations are the base coat — what every view
|
|
1729
|
+
* of this table shows until a view says otherwise. A view's OWN `presentation.style` is
|
|
1730
|
+
* an override, piece by piece: a view that only ever set manual row highlights still
|
|
1731
|
+
* inherits the table's color-by and rules for everything it never touched, and a view
|
|
1732
|
+
* that fully redecorated (its own `colorBy` AND its own `rules`) is not haunted by a
|
|
1733
|
+
* table rule it meant to replace. Per-piece, never all-or-nothing, because a view is a
|
|
1734
|
+
* LOOK on top of the table, not a wholesale substitute for it.
|
|
1735
|
+
*/
|
|
1736
|
+
declare function resolveTableStyle(decorations: TableDecorations | null | undefined, fields: readonly Field[], viewStyle: TableStyle | undefined): TableStyle;
|
|
1778
1737
|
|
|
1779
|
-
/** Every surface a saved view is drawn by.
|
|
1780
|
-
type ViewKeyLayout = "grid" | "kanban" | "calendar" | "gallery" | "
|
|
1738
|
+
/** Every surface a saved view is drawn by. */
|
|
1739
|
+
type ViewKeyLayout = "grid" | "kanban" | "calendar" | "gallery" | "timeline" | "list";
|
|
1781
1740
|
/**
|
|
1782
1741
|
* 🚩 THE ONE SWITCH FOR THE TIMELINE'S STORE KEYS (lane VIEWS-AND-FIELDS, sublane TL).
|
|
1783
1742
|
*
|
|
@@ -1811,7 +1770,7 @@ interface ViewKeyDeclaration {
|
|
|
1811
1770
|
declare const VIEW_KEYS: readonly ViewKeyDeclaration[];
|
|
1812
1771
|
/**
|
|
1813
1772
|
* THE LAYOUTS THE STORE KEEPS ON A VIEW. `custom.view_keys()` judges a view's `layout` against its
|
|
1814
|
-
* own list (grid, kanban, calendar, gallery
|
|
1773
|
+
* own list (grid, kanban, calendar, gallery) and refuses any other word by name. A layout this
|
|
1815
1774
|
* package draws before the store keeps it — the timeline, 2026-10-02 — is never sent as a view's or a
|
|
1816
1775
|
* look's layout (`viewSettingsPatch`, `viewDocument`): it is drawn for this visit and says so. When the
|
|
1817
1776
|
* store's registry admits it, add it here and nothing else changes.
|
|
@@ -1894,7 +1853,7 @@ declare const LAYOUT_LABEL: Record<ViewLayout, string>;
|
|
|
1894
1853
|
* · gallery a FILE column for the card's picture. NOT blocking: the cards draw without one,
|
|
1895
1854
|
* so the offer sits above them instead of in place of them.
|
|
1896
1855
|
* · timeline a DATE column each bar starts on (the calendar's `dateField`). Blocking.
|
|
1897
|
-
* `PAGE_VIEWS`' two extra values (dashboards, archived)
|
|
1856
|
+
* `PAGE_VIEWS`' two extra values (dashboards, archived) read
|
|
1898
1857
|
* nothing a table can lack. This package ships no map layout; the day it does,
|
|
1899
1858
|
* `Record<ViewLayout, …>` below refuses to compile until the new layout names what it needs.
|
|
1900
1859
|
*/
|
|
@@ -2021,56 +1980,9 @@ interface SavedView extends SavedViewSpec {
|
|
|
2021
1980
|
id: Uuid;
|
|
2022
1981
|
/** Where the view came from when it was moved in (the mover, the S0 repair), else null. */
|
|
2023
1982
|
movedFrom: Record<string, unknown> | null;
|
|
2024
|
-
/**
|
|
2025
|
-
* THE WAY THIS TABLE IS MEANT TO BE LOOKED AT, when somebody decided one — a layout id the
|
|
2026
|
-
* host draws (`sheet`), read off the stored kind before `layout` folds it to the four the
|
|
2027
|
-
* package draws. Null when nobody designated one. See `designatedLayoutOf`.
|
|
2028
|
-
*/
|
|
2029
|
-
designatedLayout?: string | null;
|
|
2030
1983
|
}
|
|
2031
|
-
/**
|
|
2032
|
-
|
|
2033
|
-
*
|
|
2034
|
-
* "For something like my data tables, which are predetermined with a default view of 'Sheet'
|
|
2035
|
-
* I want to see … it just shows them the way it should in the default view. That's how you take
|
|
2036
|
-
* custom systems and fake like they're hard-coded builtin systems."
|
|
2037
|
-
*
|
|
2038
|
-
* A designation is a DELIBERATE write, never a click: a view whose stored kind is a layout the
|
|
2039
|
-
* HOST draws (`sheet` — a layout the store's view-keys registry declares, and one the layout
|
|
2040
|
-
* buttons never write onto a view). That is the ONE way a table is designated (lane
|
|
2041
|
-
* VIEW-KEYS-SHEET): the mover and the repair write `layout: "sheet"` on a copied older table's
|
|
2042
|
-
* default view; `moved_from` says only where a view came from and designates nothing. A package
|
|
2043
|
-
* kind (`grid`, `kanban`, …) is not a designation: picking Kanban writes `layout: "kanban"` onto
|
|
2044
|
-
* the view, and a click must never take the layout chooser away.
|
|
2045
|
-
*/
|
|
2046
|
-
declare function designatedLayoutOf(definition: Record<string, unknown> | null | undefined): string | null;
|
|
2047
|
-
/**
|
|
2048
|
-
* HOW THE TABLE OPENS, decided once from its default view and the layouts the host draws.
|
|
2049
|
-
*
|
|
2050
|
-
* · `designated` — the default view names a host layout this host registered: the page opens
|
|
2051
|
-
* IN it and offers no other layout by default (the others sit in the page's one menu);
|
|
2052
|
-
* · `chooser` — nothing designated (or the host does not draw what was designated): the
|
|
2053
|
-
* page opens on the view's own layout and shows the layout chooser.
|
|
2054
|
-
*
|
|
2055
|
-
* Only the DEFAULT view designates: a person who opens another saved view is choosing, and the
|
|
2056
|
-
* chooser is theirs.
|
|
2057
|
-
*/
|
|
2058
|
-
type TableOpening = {
|
|
2059
|
-
kind: "designated";
|
|
2060
|
-
hostLayout: string;
|
|
2061
|
-
} | {
|
|
2062
|
-
kind: "chooser";
|
|
2063
|
-
};
|
|
2064
|
-
declare function tableOpening(view: Pick<SavedView, "isDefault" | "designatedLayout"> | null | undefined, hostLayoutIds: readonly string[]): TableOpening;
|
|
2065
|
-
/**
|
|
2066
|
-
* THE TABLE'S DEFAULT VIEW WHEN MORE THAN ONE SAYS IT IS (lane DATA-V2-FACE-2).
|
|
2067
|
-
*
|
|
2068
|
-
* Two views can both claim the default: the mover's designated one (the older table's own, the
|
|
2069
|
-
* Sheet) and a page seed that a later move of the view bar's older store brings in beside it —
|
|
2070
|
-
* both named "All records", so the store's name order cannot tell them apart. A designation is a
|
|
2071
|
-
* deliberate write and a seed is not, so the designated default wins; then the first default.
|
|
2072
|
-
*/
|
|
2073
|
-
declare function defaultViewOf<V extends Pick<SavedView, "isDefault" | "designatedLayout">>(views: readonly V[]): V | undefined;
|
|
1984
|
+
/** THE TABLE'S DEFAULT VIEW: the first view that says it is. */
|
|
1985
|
+
declare function defaultViewOf<V extends Pick<SavedView, "isDefault">>(views: readonly V[]): V | undefined;
|
|
2074
1986
|
/**
|
|
2075
1987
|
* WHICH FIELD EACH LAYOUT CAN BE DRAWN FROM, decided from the FIELD'S OWN
|
|
2076
1988
|
* DECLARATION and never from the values it happens to hold.
|
|
@@ -2176,7 +2088,7 @@ interface ColumnSort {
|
|
|
2176
2088
|
field: string;
|
|
2177
2089
|
direction: "asc" | "desc";
|
|
2178
2090
|
}
|
|
2179
|
-
/** THE SORT CONTROL'S WORDS,
|
|
2091
|
+
/** THE SORT CONTROL'S WORDS, said once, so the grid and the board never read differently. */
|
|
2180
2092
|
declare const MANUAL_SORT: {
|
|
2181
2093
|
readonly label: "Manual";
|
|
2182
2094
|
readonly detail: "· set by hand";
|
|
@@ -2195,7 +2107,7 @@ declare const MANUAL_SORT: {
|
|
|
2195
2107
|
* above the table's own toolbar. It is now one compact control in the one toolbar row: a sort
|
|
2196
2108
|
* icon, the order in a word ("Manual", "Reset Date ↑"), a badge when a column sort is setting a
|
|
2197
2109
|
* hand-set order aside, and a popover that says the state in ONE line and offers the actions.
|
|
2198
|
-
* Airtable's sort button carries its state the same way.
|
|
2110
|
+
* Airtable's sort button carries its state the same way. Every layout draws it.
|
|
2199
2111
|
*/
|
|
2200
2112
|
interface SortStateAction {
|
|
2201
2113
|
key: string;
|
|
@@ -2220,7 +2132,7 @@ interface SortStateControlProps {
|
|
|
2220
2132
|
declare function SortStateControl({ label, line, attention, actions, mode }: SortStateControlProps): react.JSX.Element;
|
|
2221
2133
|
/** The sentence the popover says for a hand-ordered view, with or without a column sort over it. */
|
|
2222
2134
|
declare function handOrderLine(sortName: string | null, direction: "asc" | "desc" | null): string;
|
|
2223
|
-
/** The control's props for a hand-ordered view — the grid's
|
|
2135
|
+
/** The control's props for a hand-ordered view — the grid's words, once. */
|
|
2224
2136
|
declare function handOrderSortState(args: {
|
|
2225
2137
|
sortName: string | null;
|
|
2226
2138
|
direction: "asc" | "desc" | null;
|
|
@@ -2294,7 +2206,7 @@ interface GridProps {
|
|
|
2294
2206
|
* S2-PRIME: either shape — the flat map, or a view's own nested question (the Rule shape);
|
|
2295
2207
|
* the store compiles both into the one WHERE clause.
|
|
2296
2208
|
*/
|
|
2297
|
-
filter?: StoreFilter
|
|
2209
|
+
filter?: StoreFilter | undefined;
|
|
2298
2210
|
/**
|
|
2299
2211
|
* Clear the question `filter` carries (the view's own filter), for the "No rows match these
|
|
2300
2212
|
* filters" screen's Clear filters. Left out, that screen clears only the grid's own search and
|
|
@@ -2445,7 +2357,7 @@ declare function RecordsTableCard(props: RecordsTableCardProps): react.JSX.Eleme
|
|
|
2445
2357
|
|
|
2446
2358
|
/** What a view asks of the store, and how it draws columns. */
|
|
2447
2359
|
interface ViewReading {
|
|
2448
|
-
filter?: StoreFilter | null | undefined;
|
|
2360
|
+
filter?: StoreFilter$1 | null | undefined;
|
|
2449
2361
|
sorts?: readonly ViewSort[] | undefined;
|
|
2450
2362
|
presentation?: GridPresentation | undefined;
|
|
2451
2363
|
/** A hand-ordered view with no sort is read by its own id (the store places its rows). */
|
|
@@ -4062,27 +3974,18 @@ interface ViewSwitcherProps {
|
|
|
4062
3974
|
* S2-PRIME: either shape — a flat map, or the view's own nested question (`where`, the
|
|
4063
3975
|
* store's Rule shape). The grid, the board's headings and the numbers all ask it.
|
|
4064
3976
|
*/
|
|
4065
|
-
filter?: StoreFilter | undefined;
|
|
3977
|
+
filter?: StoreFilter$1 | undefined;
|
|
4066
3978
|
/**
|
|
4067
3979
|
* Clear the question `filter` carries, for the "No rows match these filters" screen of every
|
|
4068
3980
|
* layout. Left out, that screen says the view's filter holds every row back without a button.
|
|
4069
3981
|
*/
|
|
4070
3982
|
onClearFilter?: (() => void) | undefined;
|
|
4071
|
-
/**
|
|
4072
|
-
* The HOST layout showing now (`RecordsUiHost.layouts`, by id), or null for the
|
|
4073
|
-
* package's own. Controlled by the page, because the address names it.
|
|
4074
|
-
*/
|
|
4075
|
-
hostLayout?: string | null | undefined;
|
|
4076
|
-
/** The person picked a host layout (its id), or went back to one of the four (null). */
|
|
4077
|
-
onHostLayoutChange?: ((id: string | null) => void) | undefined;
|
|
4078
3983
|
/**
|
|
4079
3984
|
* Whether this component draws its own row — the view's name and the layout buttons. `false`
|
|
4080
3985
|
* when the page that mounts it draws the layout choice itself (`TablePage` keeps one control
|
|
4081
3986
|
* cluster for the whole table, lane DATA-V2-FACE). Default `true`, for every other host.
|
|
4082
3987
|
*/
|
|
4083
3988
|
chooser?: boolean | undefined;
|
|
4084
|
-
/** Handed to a host layout's `render` — the page's own export. */
|
|
4085
|
-
openExport?: (() => void) | undefined;
|
|
4086
3989
|
/**
|
|
4087
3990
|
* THE SAVED VIEW'S OWN ID, when the view is a stored one (lane GRID-MANUAL). A hand-set order
|
|
4088
3991
|
* lives on the view's row, so the grid reads it (`custom.read_records_in_view_order`) and writes
|
|
@@ -4098,7 +4001,7 @@ interface ViewSwitcherProps {
|
|
|
4098
4001
|
/**
|
|
4099
4002
|
* Where the grid's footer sits (lane TABLE-PAGE-CHROME) — `sticky`: the layout fills the height
|
|
4100
4003
|
* the page gives it and the footer stays on the bottom edge; `inline`: after the last row. Handed
|
|
4101
|
-
* to the Grid
|
|
4004
|
+
* to the Grid. Left out: natural height, as always.
|
|
4102
4005
|
*/
|
|
4103
4006
|
footer?: FooterPlacement | undefined;
|
|
4104
4007
|
/** The grid as an embedded table (`GridProps.embedded`): its page furniture off. */
|
|
@@ -4121,7 +4024,7 @@ interface ViewSwitcherProps {
|
|
|
4121
4024
|
className?: string | undefined;
|
|
4122
4025
|
}
|
|
4123
4026
|
/** The records this view holds: its Rule's members when it names one, the table otherwise. */
|
|
4124
|
-
declare function useViewRecords(view: SavedViewSpec, pageSize?: number, filter?: StoreFilter, viewId?: Uuid$1 | null): {
|
|
4027
|
+
declare function useViewRecords(view: SavedViewSpec, pageSize?: number, filter?: StoreFilter$1, viewId?: Uuid$1 | null): {
|
|
4125
4028
|
rows: ReadRow$1[];
|
|
4126
4029
|
manual: boolean;
|
|
4127
4030
|
/** How many records the view holds, as the store counted them (null when it did not count). */
|
|
@@ -4147,7 +4050,7 @@ declare function useViewRecords(view: SavedViewSpec, pageSize?: number, filter?:
|
|
|
4147
4050
|
*/
|
|
4148
4051
|
membership: string;
|
|
4149
4052
|
};
|
|
4150
|
-
declare function ViewSwitcher({ view, onLayoutChange, onViewChange, onOpenRecord, openRecordId, onCloseRecord, onMoved, onNewRecordForm, onAskWhoChanged, pageSize: pageSizeAsked, titleField, filter, onClearFilter,
|
|
4053
|
+
declare function ViewSwitcher({ view, onLayoutChange, onViewChange, onOpenRecord, openRecordId, onCloseRecord, onMoved, onNewRecordForm, onAskWhoChanged, pageSize: pageSizeAsked, titleField, filter, onClearFilter, chooser, viewId, onOrderPlaced, footer, embedded, sortOverride, searchOverride, onSearchChange, searchBox, newRowLabel, className, }: ViewSwitcherProps): react.JSX.Element;
|
|
4151
4054
|
|
|
4152
4055
|
type CalendarMode = "month" | "week" | "day" | "list";
|
|
4153
4056
|
interface CalendarViewProps {
|
|
@@ -4639,12 +4542,68 @@ interface FormQuestionSpec {
|
|
|
4639
4542
|
* question: a person is never silently skipped past something.
|
|
4640
4543
|
*/
|
|
4641
4544
|
showIf?: RuleExpression | null;
|
|
4545
|
+
/**
|
|
4546
|
+
* LOGIC JUMPS (lane TYPEFORM-DUP). After this question, the FIRST jump whose `when` the store
|
|
4547
|
+
* answers true is taken — to a later question or to one of the form's endings. A jump with no
|
|
4548
|
+
* `when` is "always". Undecided falls through to the next question. The store judges the route
|
|
4549
|
+
* (`custom._form_route`); this package never does.
|
|
4550
|
+
*/
|
|
4551
|
+
jumps?: FormJump[] | null;
|
|
4552
|
+
/** SCORING: what each answer is worth (`{"Yes": 5}`); a list answer adds each of its parts. */
|
|
4553
|
+
points?: Record<string, number> | null;
|
|
4554
|
+
}
|
|
4555
|
+
/** One logic jump: when the Rule is true, go to a later question or to an ending. */
|
|
4556
|
+
interface FormJump {
|
|
4557
|
+
when?: RuleExpression | null;
|
|
4558
|
+
to: {
|
|
4559
|
+
question: string;
|
|
4560
|
+
} | {
|
|
4561
|
+
ending: string;
|
|
4562
|
+
};
|
|
4563
|
+
}
|
|
4564
|
+
/**
|
|
4565
|
+
* ONE ENDING (lane TYPEFORM-DUP). A form may have several; a jump picks one, or the first whose
|
|
4566
|
+
* condition holds (`when`, `scoreMin`, `scoreMax`), or else the first with no condition.
|
|
4567
|
+
*/
|
|
4568
|
+
interface FormEnding {
|
|
4569
|
+
/** A short name, lower-case letters, digits, - and _. Jumps point at it. */
|
|
4570
|
+
id: string;
|
|
4571
|
+
title?: string | null;
|
|
4572
|
+
body?: string | null;
|
|
4573
|
+
/** One of the organization's public pictures (the builder's side). */
|
|
4574
|
+
pictureFileId?: Uuid | null;
|
|
4575
|
+
/** The picture's public address (the store resolves it for the public page). */
|
|
4576
|
+
pictureUrl?: string | null;
|
|
4577
|
+
buttonLabel?: string | null;
|
|
4578
|
+
/** A secure page on the organization's own sites — the thank-you's own rule. */
|
|
4579
|
+
redirectUrl?: string | null;
|
|
4580
|
+
when?: RuleExpression | null;
|
|
4581
|
+
scoreMin?: number | null;
|
|
4582
|
+
scoreMax?: number | null;
|
|
4583
|
+
}
|
|
4584
|
+
/** THE WELCOME SCREEN, before question one: a title, a message, a picture and a Start button. */
|
|
4585
|
+
interface FormWelcome {
|
|
4586
|
+
title?: string | null;
|
|
4587
|
+
body?: string | null;
|
|
4588
|
+
pictureFileId?: Uuid | null;
|
|
4589
|
+
pictureUrl?: string | null;
|
|
4590
|
+
buttonLabel?: string | null;
|
|
4642
4591
|
}
|
|
4643
4592
|
/** The look. Tokens, so light and dark both come out right without a second theme. */
|
|
4644
4593
|
interface FormTheme {
|
|
4645
4594
|
/** A design-system accent class or a CSS color. Left out, the app's own accent. */
|
|
4646
4595
|
accent?: string | null;
|
|
4647
4596
|
align?: "left" | "center" | null;
|
|
4597
|
+
/** One of design-system `FORM_FONTS`. */
|
|
4598
|
+
font?: string | null;
|
|
4599
|
+
/** One of design-system `FORM_BUTTON_STYLES`. */
|
|
4600
|
+
button?: string | null;
|
|
4601
|
+
/** One of design-system `FORM_BACKGROUNDS`. */
|
|
4602
|
+
background?: string | null;
|
|
4603
|
+
/** The picture for the `picture` background: a public picture of the organization. */
|
|
4604
|
+
backgroundFileId?: Uuid | null;
|
|
4605
|
+
/** Its public address, as the store resolved it for the public page. */
|
|
4606
|
+
backgroundUrl?: string | null;
|
|
4648
4607
|
}
|
|
4649
4608
|
/**
|
|
4650
4609
|
* THE FORM'S OWN LOOK, in the portal's words (`custom._portal_style` resolves both): a colour of
|
|
@@ -4685,6 +4644,15 @@ interface FormSpec {
|
|
|
4685
4644
|
*/
|
|
4686
4645
|
thankYou?: FormThankYou | null;
|
|
4687
4646
|
submitLabel?: string | null;
|
|
4647
|
+
/** A separate first screen with a Start button (lane TYPEFORM-DUP). */
|
|
4648
|
+
welcome?: FormWelcome | null;
|
|
4649
|
+
/** Several endings, each picked by the answers (lane TYPEFORM-DUP). */
|
|
4650
|
+
endings?: FormEnding[] | null;
|
|
4651
|
+
/**
|
|
4652
|
+
* HIDDEN FIELDS: names read from the link (`?utm_source=…&ref=…`), kept on the submission and
|
|
4653
|
+
* never shown. Not questions — a question with the same key is prefilled instead.
|
|
4654
|
+
*/
|
|
4655
|
+
hiddenFields?: string[] | null;
|
|
4688
4656
|
/**
|
|
4689
4657
|
* Is this form meant to be answerable by someone who is not signed in? The
|
|
4690
4658
|
* runner does NOT make that true by itself — it needs the anonymous write
|
|
@@ -4725,6 +4693,27 @@ interface SavedForm extends FormSpec {
|
|
|
4725
4693
|
* different lists.
|
|
4726
4694
|
*/
|
|
4727
4695
|
declare function formPresentation(spec: FormSpec): Record<string, unknown>;
|
|
4696
|
+
declare function themeFromDocument(raw: unknown): FormTheme | null;
|
|
4697
|
+
declare function welcomeFromDocument(raw: unknown): FormWelcome | null;
|
|
4698
|
+
declare function endingsFromDocument(raw: unknown): FormEnding[];
|
|
4699
|
+
/** The hidden fields' values out of a link's query, narrowed to the names the form declares. */
|
|
4700
|
+
declare function hiddenFromLink(hiddenFields: readonly string[] | null | undefined, params: Record<string, string | string[] | undefined>): Record<string, string>;
|
|
4701
|
+
/** Does this form route at all — conditions, jumps, endings or points the store must judge? */
|
|
4702
|
+
declare function formRoutes(form: Pick<FormSpec, "questions" | "endings">): boolean;
|
|
4703
|
+
/** HOW A FORM GOES INTO SOMEBODY ELSE'S PAGE. */
|
|
4704
|
+
declare const FORM_EMBEDS: readonly ["inline", "popup", "slider"];
|
|
4705
|
+
type FormEmbed = (typeof FORM_EMBEDS)[number];
|
|
4706
|
+
/**
|
|
4707
|
+
* THE SNIPPET THE OWNER COPIES (lane TYPEFORM-DUP). `inline` is a plain iframe of the public link
|
|
4708
|
+
* in embed mode; `popup` and `slider` are one button plus the platform's own embed script
|
|
4709
|
+
* (`<origin>/embed/form.js`), which opens the same iframe in a centred window or a side panel.
|
|
4710
|
+
* Nothing in either needs a cookie: the form keeps its place in its own storage and posts to its
|
|
4711
|
+
* own origin, so it keeps working with third-party cookies blocked.
|
|
4712
|
+
*/
|
|
4713
|
+
declare function formEmbedSnippet(kind: FormEmbed, formUrl: string, options?: {
|
|
4714
|
+
label?: string | null;
|
|
4715
|
+
height?: number | null;
|
|
4716
|
+
}): string;
|
|
4728
4717
|
/** `presentation.look` both directions. Nothing set is `null`, one spelling on both sides. */
|
|
4729
4718
|
declare function formLookDocument(look: FormLook | null): Record<string, unknown> | null;
|
|
4730
4719
|
declare function formLookFromDocument(raw: unknown): FormLook | null;
|
|
@@ -4756,6 +4745,14 @@ declare function submissionStamp(args: {
|
|
|
4756
4745
|
onBehalfOf?: string | null;
|
|
4757
4746
|
}): Record<string, unknown>;
|
|
4758
4747
|
|
|
4748
|
+
interface FormResultsPanelProps {
|
|
4749
|
+
form: SavedForm | (FormSpec & {
|
|
4750
|
+
id: Uuid$1;
|
|
4751
|
+
});
|
|
4752
|
+
className?: string | undefined;
|
|
4753
|
+
}
|
|
4754
|
+
declare function FormResultsPanel({ form, className }: FormResultsPanelProps): react.JSX.Element;
|
|
4755
|
+
|
|
4759
4756
|
interface PortalBuilderProps {
|
|
4760
4757
|
/**
|
|
4761
4758
|
* OPTIONAL. The Table whose rail this was opened from. It is pre-ticked as a
|
|
@@ -5643,8 +5640,8 @@ declare function filterTargets(filter: FilterPageBlock, blocks: readonly PageBlo
|
|
|
5643
5640
|
* value wins). The view asks a Rule: the extras join it under `and`, by field id, which is the only
|
|
5644
5641
|
* way the Rule shape names a column (REC-17). An extra whose key has no id is left out and named.
|
|
5645
5642
|
*/
|
|
5646
|
-
declare function combineFilter(base: StoreFilter | null | undefined, extra: RecordFilter, fieldIdOf: (key: string) => string | undefined): {
|
|
5647
|
-
filter: StoreFilter | null;
|
|
5643
|
+
declare function combineFilter(base: StoreFilter$1 | null | undefined, extra: RecordFilter, fieldIdOf: (key: string) => string | undefined): {
|
|
5644
|
+
filter: StoreFilter$1 | null;
|
|
5648
5645
|
dropped: string[];
|
|
5649
5646
|
};
|
|
5650
5647
|
|
|
@@ -5676,6 +5673,10 @@ type FormAsked = {
|
|
|
5676
5673
|
asked: boolean;
|
|
5677
5674
|
said?: string | null;
|
|
5678
5675
|
}>;
|
|
5676
|
+
/** TYPEFORM-DUP: the ending the store's route reached (null: the thank-you screen). */
|
|
5677
|
+
ending?: string | null | undefined;
|
|
5678
|
+
/** TYPEFORM-DUP: the score so far (null: the form carries no points). */
|
|
5679
|
+
score?: number | null | undefined;
|
|
5679
5680
|
} | {
|
|
5680
5681
|
ok: false;
|
|
5681
5682
|
message: string;
|
|
@@ -5736,6 +5737,10 @@ interface FormRunnerProps {
|
|
|
5736
5737
|
preview?: boolean | undefined;
|
|
5737
5738
|
onSubmitted?: ((recordId: Uuid$1 | null) => void) | undefined;
|
|
5738
5739
|
className?: string | undefined;
|
|
5740
|
+
/** TYPEFORM-DUP: called once, at the person's first answer — the host counts a start. */
|
|
5741
|
+
onStart?: (() => void) | undefined;
|
|
5742
|
+
/** TYPEFORM-DUP: called as each question is put in front of the person — the host counts drop-off. */
|
|
5743
|
+
onQuestionShown?: ((fieldKey: string) => void) | undefined;
|
|
5739
5744
|
}
|
|
5740
5745
|
/**
|
|
5741
5746
|
* THE ONE ENTRY POINT. It picks the arm and nothing else: a caller that brought
|
|
@@ -6269,10 +6274,7 @@ interface TablePageProps$1 {
|
|
|
6269
6274
|
* Half a deep link is a link that works when you arrive and lies when you
|
|
6270
6275
|
* copy it out of the address bar afterwards.
|
|
6271
6276
|
*/
|
|
6272
|
-
/**
|
|
6273
|
-
* Called with the view the person moved to — one of `PAGE_VIEWS`, or the id of a
|
|
6274
|
-
* layout the HOST draws (`RecordsUiHost.layouts`), which the address carries too.
|
|
6275
|
-
*/
|
|
6277
|
+
/** Called with the view the person moved to: one of `PAGE_VIEWS`, which the address carries too. */
|
|
6276
6278
|
onViewChanged?: ((view: PageView | string) => void) | undefined;
|
|
6277
6279
|
/**
|
|
6278
6280
|
* WHICH FIELD THE ADDRESS WANTS THE BOARD'S COLUMNS TO BE, for this visit.
|
|
@@ -6370,7 +6372,7 @@ interface TablePageProps$1 {
|
|
|
6370
6372
|
*/
|
|
6371
6373
|
onShownViewChange?: ((shown: ShownViewReport) => void) | undefined;
|
|
6372
6374
|
/**
|
|
6373
|
-
* THE VIEW IN THE ADDRESS BAR (FTS-5 item 2
|
|
6375
|
+
* THE VIEW IN THE ADDRESS BAR (FTS-5 item 2). What the address
|
|
6374
6376
|
* said about the person's look on arrival — sort, column filters, search, hidden columns, page
|
|
6375
6377
|
* (`viewAddressFromParams`). Read once, on arrival. Absent: the page opens as it always did.
|
|
6376
6378
|
*/
|
|
@@ -6401,7 +6403,7 @@ interface ShownViewReport {
|
|
|
6401
6403
|
/** The saved view under the look; null while the views are read or when there are none. */
|
|
6402
6404
|
viewId: string | null;
|
|
6403
6405
|
viewName: string | null;
|
|
6404
|
-
/** "records" layouts (grid, kanban, calendar, gallery
|
|
6406
|
+
/** "records" layouts (grid, kanban, calendar, gallery), or the main view. */
|
|
6405
6407
|
showing: string;
|
|
6406
6408
|
groupField: string | null;
|
|
6407
6409
|
dateField: string | null;
|
|
@@ -6909,7 +6911,7 @@ interface PipelineBoardProps {
|
|
|
6909
6911
|
* headings are counted by the store with THE SAME question (`pipelineBoard({filter})`), so a
|
|
6910
6912
|
* column never says 16 over the 4 cards a view put in it.
|
|
6911
6913
|
*/
|
|
6912
|
-
filter?: StoreFilter | null | undefined;
|
|
6914
|
+
filter?: StoreFilter$1 | null | undefined;
|
|
6913
6915
|
onMeasureChange?: ((key: string | null) => void) | undefined;
|
|
6914
6916
|
onOpenRecord?: ((recordId: Uuid$1) => void) | undefined;
|
|
6915
6917
|
/** Called after a move lands, so the host re-reads the rows it owns. */
|
|
@@ -6962,7 +6964,7 @@ declare function useDrillAnswers(args: {
|
|
|
6962
6964
|
question: MatrxDrillQuestion;
|
|
6963
6965
|
where: Record<string, unknown>;
|
|
6964
6966
|
/** A custom Table's nested (Rule) question, when its view asks one. */
|
|
6965
|
-
rule?: StoreFilter
|
|
6967
|
+
rule?: StoreFilter | undefined;
|
|
6966
6968
|
/** The time Dimension a window (and a comparison) runs along. */
|
|
6967
6969
|
windowKey?: string | undefined;
|
|
6968
6970
|
version?: unknown;
|
|
@@ -6984,7 +6986,7 @@ declare function useDrill(args: {
|
|
|
6984
6986
|
onQuestionChange: (next: MatrxDrillQuestion) => void;
|
|
6985
6987
|
/** The host's own flat filter, before the trail. */
|
|
6986
6988
|
filter?: RecordFilter | undefined;
|
|
6987
|
-
rule?: StoreFilter
|
|
6989
|
+
rule?: StoreFilter | undefined;
|
|
6988
6990
|
version?: unknown;
|
|
6989
6991
|
rowNoun?: string;
|
|
6990
6992
|
rootLabel?: string;
|
|
@@ -7294,4 +7296,4 @@ declare function RecordsSkeleton({ layout, embedded, rows, className }: RecordsS
|
|
|
7294
7296
|
*/
|
|
7295
7297
|
declare function TablePageSkeleton({ layout: layoutAsked, embedded, rows, tableId, className, }: RecordsSkeletonProps): react.JSX.Element;
|
|
7296
7298
|
|
|
7297
|
-
export { ABSENCE_WORD_LABEL, ABSENCE_WORD_VALUES, ACTION_KINDS, ARCHIVED_NEVER_DESTROYED, ARCHIVE_MEANS, ASK_EXAMPLE, type AbsenceWord, AccentSwatches, type AccentSwatchesProps, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, type AnnounceTableArchived, type AppletPageBlock, ArchiveDeliberatelyDialog, type ArchiveDeliberatelyDialogProps, ArchivedDisclosure, type ArchivedDisclosureProps, ArchivedPortals, type ArchivedPortalsProps, ArchivedView, type ArchivedViewProps, type AskRead, BODY_COLUMN_NAME, BODY_SAVE_PAUSE_MS, BOOKING_NOT_HERE_LINE, BOOKING_PAGE_STATE_LABEL, BOOKING_PAGE_STATE_VALUES, BookingBuilder, type BookingBuilderProps, type BookingPageState, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, type ButtonPageBlock, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CHECKLIST_REQUIREMENT_KINDS, CHECKLIST_REQUIREMENT_LABEL, CONDITION_OPS, CONTEXT_POLICY_LABEL, ADDABLE_TYPES as CUSTOM_FIELD_ADDABLE_TYPES, type CalendarMode, CalendarView, type CalendarViewProps, type CaptureMode, type CaptureQueuePort, CaptureRun, type CaptureRunProps, CaptureSheet, type CaptureSheetProps, type CellAddress, type CellRefusal, type CellState, ChartBlock, type ChartBlockProps, type ChartConfig, ChartFrame, type ChartKind, ChartLegendContent, type ChartPageBlock, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, type ChoiceAddition, type ChoiceAsk, ChoiceAskButtons, ChoiceListEditor, type ChoiceListRow, type CombinedRows, CommentThread, type CommentThreadProps, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, type CustomFieldAddRequest, type CustomFieldAddResult, type CustomFieldSetResult, type CustomFieldValuesRequest, type CustomFieldsAgentDoor, type CustomFieldsAgentState, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FOOTER, DEFAULT_VIEW_NAME, DUE_STATE_LABEL, DashboardCanvas, type DashboardCanvasProps, DigestScheduler, type DigestSchedulerProps, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, ENGINEER_TEXT, ENTITY_REFERENCE_KINDS_MISSING, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, EntityBoard, type EntityBoardProps, EntityChartBlock, type EntityChartBlockProps, type EntityColumn, EntityDataScope, EntityGrid, type EntityLayout, EntityReferenceKindPicker, type EntityReferenceKindPickerProps, type EntityRow, type EntitySource, type EntityTable, EntityTablePage, type EntityTablePageProps, ExportMenu, type ExportMenuProps, FIELD_RULE_KIND_LABEL, FIELD_RULE_KIND_VALUES, FIELD_SENSITIVITY_LABEL, FIELD_TYPE_CATALOGUE, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FOOTER_WORDS, FORMULA_FUNCTIONS, FORMULA_OP_JOINS, FORMULA_OP_LABEL, FORMULA_OP_VALUES, FORM_FLOWS, FORM_NOT_HERE_LINE, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldRuleKindValue, type FieldTypeChoice, FilePicker, type FilePickerProps, type FilterPageBlock, type FooterPlacement, type FormAsked, FormBuilder, type FormBuilderProps, type FormFlow, type FormLook, FormLookFrame, type FormLookFrameProps, FormLookLogo, type FormLookView, type FormPageBlock, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, type FormulaHelpAsk, type FormulaOp, Grid, GridCell, type GridContextRecord, type GridContextSnapshot, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, GuessedFieldType, type HeadingPageBlock, HistoryPanel, type HistoryPanelProps, type HostLayout, INBOX_GROUPINGS, INBOX_VIEWS, IN_MEMORY_QUEUE_REASON, ImportNotice, type ImportNoticeProps, type ImportSource, ImportWizard, type ImportWizardProps, InTableToolbar, type InboxGroup, type InboxGrouping, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LOOK_WORDS, type LabelLookup, type LinkRail, type ListPageBlock, MACHINE_IDENTITY, MANUAL_SORT, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, MOST_NEW_COLUMNS, type MainView, type MoveWritten, MyChecklistSteps, NEEDS_A_SENTENCE, NEW_COLUMN_TYPES, NOT_DRAWN_HERE, NO_AGENT_PORT, NO_CHAT_REASON, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_RULES_YET, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewColumn, type NewColumnType, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, ObjectAction, ObjectActionContextMenuItems, ObjectActionGlyph, ObjectActionIcon, ObjectActionMenuItems, type ObjectActionMenuItemsProps, type OpenRecordsAsk, type OrganizationMember, PAGE_BLOCK_KINDS, PAGE_BLOCK_LABEL, PAGE_KIND, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, PORTAL_NOT_HERE_LINE, PROPOSED_CHANGE_ACT_LABEL, PROPOSED_CHANGE_ACT_VALUES, type PageBlock, type PageBlockKind, PageScreen, type PageScreenProps, type PageView, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, PickOrAdd, type PickOrAddItem, type PickOrAddProps, type PickableFieldType, type PickerTable, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalLookEditor, type PortalLookEditorProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, type ProposedChangeAct, ProvenanceBadge, PublicPicturePicker, type PublicPicturePickerProps, PublicViewPage, type PublicViewPageProps, QUESTION_OPS, QUESTION_SURFACE, type QuestionAnswer, QuestionAnswerView, type QuestionGroup, type QuestionMeasure, type QuestionOp, QuestionPanel, type QuestionPanelProps, type QuestionRow, type QuestionShow, type QuestionSpec, RECORDS_GRID_ROW_PX, RECORDS_SKELETON_LAYOUTS, ROLLUP_AGG_LABEL, ROLLUP_AGG_VALUES, RULE_NOT_HERE_LINE, type ReaskContext, type ReasonGroup, type RecordActionHost, RecordActionMenu, type RecordActionMenuProps, type RecordActionSubject, type RecordActionsInput, RecordBody, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, type RecordMoves, type RecordPageBlock, RecordPanel, type RecordPanelProps, RecordValue, RecordsMount, type RecordsMountProps, RecordsSkeleton, type RecordsSkeletonLayout, type RecordsSkeletonProps, RecordsTableCard, type RecordsTableCardProps, type RecordsUiHost, RecordsUiProvider, ReferenceBuilder, type ReferenceBuilderProps, type ReferenceChoice, RefusalLine, RefusalNotice, type RefusedRow, type RelationFieldType, RelationPicker, type RelationPickerProps, type RenderTextSlot, type ResolveName, type RichTextEditProps, type RollupAgg, SAVED_VIEWS_UNAVAILABLE, SAVE_TO_TABLE_TYPES, SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS, SECTIONS_UNKNOWN, SERIES_COLORS, SHARE_NOT_YOURS_LINE, SIGNED_WORD, SOMEBODY, STAGE_RULE_ON_FAIL_LABEL, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, STORE_KEEPS_TIMELINE, STORE_KEPT_LAYOUTS, SUBSCRIPTION_CADENCES, SUBSCRIPTION_CADENCE_LABEL, SUBSCRIPTION_CHANNEL_LABEL, SUBSCRIPTION_CHANNEL_VALUES, SaveToTable, type SaveToTableProps, type SaveToTableSource, type SavedDashboard, type SavedForm, type SavedQuestion, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, ShowListsToggle, type ShownViewReport, SignBlock, type SignBlockProps, SignaturePad, SignatureValue, type SnoozeChoice, type SortStateAction, SortStateControl, type SortStateControlProps, StageRulesSection, type StageRulesSectionProps, type StandardColumn, StandardRecordForm, type StandardRecordFormProps, StepRow, type SubscriptionChannel, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NAME_MAX, TABLE_NOT_REACHABLE, TABLE_TOOLBAR_ROW_CLASS, THE_SYSTEM, TIMELINE_ZOOMS, TableActionHost, TableAsk, type TableAskProps, TableDetails, TableDuplicateDialog, type TableDuplicateDialogProps, TableFoundationSwitch, type TableLane, type TableOpening, TablePage, type TablePageActionHost, type TablePageHeaderChrome, type TablePageProps, TablePageSkeleton, type TablePageSource, type TablePickerEntries, type TablePickerEntry, TableReferenceDialog, TableRenameDialog, TableRestoreRefused, type TableRights, TableSettings, type TableSettingsAgent, type TableSettingsProps, type TableSettingsSnapshot, TableShape, TableToolbarSlotContext, TablesHome, type TablesHomeProps, TemplatePreview, type TemplatePreviewProps, type TextPageBlock, type ThroughCondition, type TimelineSettings, TimelineView, type TimelineViewProps, type TimelineZoom, type TitleRepeats, type TrackedVersion, UNREAD_RECORD_LABEL, type UseSystemTableState, VIEW_ADDRESS_KEYS, VIEW_KEYS, VIEW_LAYOUTS, VIEW_NEEDS, VIEW_NOT_SAVED_YET, VISIBILITY_LANES, VISIBILITY_LANE_TITLE, type ViewAddressSort, type ViewAddressState, ViewBar, type ViewBarProps, type ViewKeyDeclaration, type ViewKeyLayout, type ViewKeyWriter, type ViewLayout, type ViewLook, type ViewNeed, type ViewNeedKind, ViewNeeds, type ViewNeedsProps, type ViewSettings, type ViewSettingsPatch, type ViewSort, type ViewSortKey, ViewSwitcher, type ViewSwitcherProps, type VisibilityLane, WITHHELD_RECORD_LABEL, WITHHELD_WORD, WORK_APPROVAL_STATES, WORK_APPROVAL_STATE_LABEL, WORK_DUE_STATES, WORK_INBOX_KINDS, WORK_INBOX_KIND_GROUP_LABEL, WORK_INBOX_KIND_LABEL, WhatYouMayDo, WhereItLives, type WhereItLivesProps, type WhoChanged, WhoChangedSource, WithheldValue, actionForAgent, actorBadge, actorWords, addDays, announceTableArchived, applyLook, archiveConfirmSentence, archivedRowLine, asRefusal, askExampleFor, askQuestion, askableFields, blockFromSpec, bodyFieldOf, bodyForReading, bodyFromKeys, calendarDayLabel, calendarDayOf, cameFromLine, cardTitleField, cardWords, carriesTimeOfDay, cellState, choiceAddition, choiceAskSentence, choiceListPatch, choiceNudgeOf, choiceRowsFrom, chooseSurface, codeDependsRefusal, colorFromTheValue, columnDeclarationFor, columnForField, columnFromName, columnNamesFrom, columnsFrom, combineFilter, combineRows, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, copyNameFor, currencyCodeFor, customFieldRequestProblems, dashboardDeclareArgs, dashboardFromSummary, dateFormatFor, dateText, dayAt, dayKeyOf, daysBetween, declareView, defaultViewOf, descriptionPatch, designatedLayoutOf, drawnBelowOnPage, drawnSignatureOf, drillDimensionsOf, drillMeasuresOf, drillPathsOf, drillWhere, duplicateProgressWords, editorKindFor, ensureSystemTable, entityCellValue, entityChoiceColumns, entityNameColumn, entityReferenceSpec, entityShownColumns, entityTableColumns, entityTitleColumn, entityValueText, envelopeFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, fieldsForNewColumns, filterTargets, flatWhere, footerOf, formDeclareArgs, formFromSummary, formLookDocument, formLookFromDocument, formLookView, formPresentation, formatForField, freeColumnName, freshFormName, gridContextKey, gridContextSnapshot, groupInbox, groupLabel, groupReasons, groupableFields, handOrderLine, handOrderSortState, hasTimePart, hintForAPerson, hintIsMachineIdentity, idsOf, isChoiceAddition, isDateField, isEngineerText, isFoundationTable, isId, isKeptTable, isMachineIdentity, isPage, isParityFieldType, isPlainFieldType, isRelationFieldType, isSignatureField, isValueSet, isViewAddressEmpty, keepLook, keptByTheApp, keyFor, kindsWithNoChoice, laneFor, lastChangeSentence, lookDiffers, lookDocument, lookFromDocument, lookPart, looksLikeId, machineIdentityIn, mayNotRestoreLine, measurableFields, memberName, moveRecordValue, newQuestion, nextInWords, nextSummaryAt, notAChoiceSentence, onlyCandidate, openingRail, openingView, packOverlaps, pageBlocksOf, pagePresentation, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pickableTypeOf, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, previewWords, publiclyAnswerable, questionArchive, questionFromDefinition, questionFromWords, questionSave, questionsOf, railFromParam, readLooks, recordActions, recordLink, recordName, recordNameIn, recordsDataSource, refusal, refusalForAPerson, refusalFromThrown, refusalLineForAPerson, refusalOr, refusedFileName, refusedRowsCsv, renderValue, rescheduledValue, resolveTableStyle, revokeConsequence, rowActionFromAgent, rowLabelChoices, rowName, rowNameIn, runToNotice, sameRecordLikely, sameViewAddress, saveTableDescription, saveToViewPlan, saveViewPatch, scalarText, seedIsSatisfied, shapesOfSource, shareUnavailableReason, signatureFileIn, signatureFileOf, signatureWords, singularNoun, skeletonLayoutFor, snoozeChoices, specFromBlock, standardTokenOf, starterPageBlocks, stepFromAgent, storeDecidesRights, storeKeepsLayout, storePublishesKind, styleFromDecorations, submissionStamp, surfaceChosen, tableName, tableNameProblem, tableOpening, tablePickerEntries, tableReferenceChoices, tableRightsAt, titleRepeats, unknownRailLine, unknownViewLine, unreadableKeys, useCanShare, useChoiceNudge, useDrill, useDrillAnswers, useDrillDefinition, useEmbedHandshake, useEnrichCells, useEntityTable, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, usePickerTables, useRecordActionHost, useRecordLabels, useRecordMoves, useRecordRights, useRecordsUi, useRowColorBy, useRowRights, useSystemTable, useTableRights, useTableToolbarSlot, useTemplatePreview, useViewRecords, useWhoChanged, viewActions, viewAddressFromParams, viewAddressToParams, viewDocument, viewFromRow, viewKeysFor, viewNeedFor, viewPatchDocument, viewSettings, viewSettingsFor, viewSettingsPatch, visibilityLaneFor, whatIsMissing, whatIsMissingForEntityReference, whatTheChoiceListIsMissing, whenWords, whyNotAskable, withheldNoticeOf, withheldSentence, withoutAddition, wordsList };
|
|
7299
|
+
export { ABSENCE_WORD_LABEL, ABSENCE_WORD_VALUES, ACTION_KINDS, ARCHIVED_NEVER_DESTROYED, ARCHIVE_MEANS, ASK_EXAMPLE, type AbsenceWord, AccentSwatches, type AccentSwatchesProps, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, type AnnounceTableArchived, type AppletPageBlock, ArchiveDeliberatelyDialog, type ArchiveDeliberatelyDialogProps, ArchivedDisclosure, type ArchivedDisclosureProps, ArchivedPortals, type ArchivedPortalsProps, ArchivedView, type ArchivedViewProps, type AskRead, BODY_COLUMN_NAME, BODY_SAVE_PAUSE_MS, BOOKING_NOT_HERE_LINE, BOOKING_PAGE_STATE_LABEL, BOOKING_PAGE_STATE_VALUES, BookingBuilder, type BookingBuilderProps, type BookingPageState, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, type ButtonPageBlock, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CHECKLIST_REQUIREMENT_KINDS, CHECKLIST_REQUIREMENT_LABEL, CONDITION_OPS, CONTEXT_POLICY_LABEL, ADDABLE_TYPES as CUSTOM_FIELD_ADDABLE_TYPES, type CalendarMode, CalendarView, type CalendarViewProps, type CaptureMode, type CaptureQueuePort, CaptureRun, type CaptureRunProps, CaptureSheet, type CaptureSheetProps, type CellAddress, type CellRefusal, type CellState, ChartBlock, type ChartBlockProps, type ChartConfig, ChartFrame, type ChartKind, ChartLegendContent, type ChartPageBlock, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, type ChoiceAddition, type ChoiceAsk, ChoiceAskButtons, ChoiceListEditor, type ChoiceListRow, type CombinedRows, CommentThread, type CommentThreadProps, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, type CustomFieldAddRequest, type CustomFieldAddResult, type CustomFieldSetResult, type CustomFieldValuesRequest, type CustomFieldsAgentDoor, type CustomFieldsAgentState, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FOOTER, DEFAULT_VIEW_NAME, DUE_STATE_LABEL, DashboardCanvas, type DashboardCanvasProps, DigestScheduler, type DigestSchedulerProps, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, ENGINEER_TEXT, ENTITY_REFERENCE_KINDS_MISSING, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, EntityBoard, type EntityBoardProps, EntityChartBlock, type EntityChartBlockProps, type EntityColumn, EntityDataScope, EntityGrid, type EntityLayout, EntityReferenceKindPicker, type EntityReferenceKindPickerProps, type EntityRow, type EntitySource, type EntityTable, EntityTablePage, type EntityTablePageProps, ExportMenu, type ExportMenuProps, FIELD_RULE_KIND_LABEL, FIELD_RULE_KIND_VALUES, FIELD_SENSITIVITY_LABEL, FIELD_TYPE_CATALOGUE, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FOOTER_WORDS, FORMULA_FUNCTIONS, FORMULA_OP_JOINS, FORMULA_OP_LABEL, FORMULA_OP_VALUES, FORM_EMBEDS, 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 FormEmbed, type FormEnding, type FormFlow, type FormJump, type FormLook, FormLookFrame, type FormLookFrameProps, FormLookLogo, type FormLookView, type FormPageBlock, type FormQuestionSpec, FormResultsPanel, type FormResultsPanelProps, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, type FormWelcome, FormsPanel, type FormsPanelProps, type FormulaHelpAsk, type FormulaOp, Grid, GridCell, type GridContextRecord, type GridContextSnapshot, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, GuessedFieldType, type HeadingPageBlock, HistoryPanel, type HistoryPanelProps, INBOX_GROUPINGS, INBOX_VIEWS, IN_MEMORY_QUEUE_REASON, ImportNotice, type ImportNoticeProps, type ImportSource, ImportWizard, type ImportWizardProps, InTableToolbar, type InboxGroup, type InboxGrouping, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LOOK_WORDS, type LabelLookup, type LinkRail, type ListPageBlock, MACHINE_IDENTITY, MANUAL_SORT, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, MOST_NEW_COLUMNS, type MainView, type MoveWritten, MyChecklistSteps, NEEDS_A_SENTENCE, NEW_COLUMN_TYPES, NOT_DRAWN_HERE, NO_AGENT_PORT, NO_CHAT_REASON, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_RULES_YET, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewColumn, type NewColumnType, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, ObjectAction, ObjectActionContextMenuItems, ObjectActionGlyph, ObjectActionIcon, ObjectActionMenuItems, type ObjectActionMenuItemsProps, type OpenRecordsAsk, type OrganizationMember, PAGE_BLOCK_KINDS, PAGE_BLOCK_LABEL, PAGE_KIND, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, PORTAL_NOT_HERE_LINE, PROPOSED_CHANGE_ACT_LABEL, PROPOSED_CHANGE_ACT_VALUES, type PageBlock, type PageBlockKind, PageScreen, type PageScreenProps, type PageView, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, PickOrAdd, type PickOrAddItem, type PickOrAddProps, type PickableFieldType, type PickerTable, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalLookEditor, type PortalLookEditorProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, type ProposedChangeAct, ProvenanceBadge, PublicPicturePicker, type PublicPicturePickerProps, PublicViewPage, type PublicViewPageProps, QUESTION_OPS, QUESTION_SURFACE, type QuestionAnswer, QuestionAnswerView, type QuestionGroup, type QuestionMeasure, type QuestionOp, QuestionPanel, type QuestionPanelProps, type QuestionRow, type QuestionShow, type QuestionSpec, RECORDS_GRID_ROW_PX, RECORDS_SKELETON_LAYOUTS, ROLLUP_AGG_LABEL, ROLLUP_AGG_VALUES, RULE_NOT_HERE_LINE, type ReaskContext, type ReasonGroup, type RecordActionHost, RecordActionMenu, type RecordActionMenuProps, type RecordActionSubject, type RecordActionsInput, RecordBody, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, type RecordMoves, type RecordPageBlock, RecordPanel, type RecordPanelProps, RecordValue, RecordsMount, type RecordsMountProps, RecordsSkeleton, type RecordsSkeletonLayout, type RecordsSkeletonProps, RecordsTableCard, type RecordsTableCardProps, type RecordsUiHost, RecordsUiProvider, ReferenceBuilder, type ReferenceBuilderProps, type ReferenceChoice, RefusalLine, RefusalNotice, type RefusedRow, type RelationFieldType, RelationPicker, type RelationPickerProps, type RenderTextSlot, type ResolveName, type RichTextEditProps, type RollupAgg, SAVED_VIEWS_UNAVAILABLE, SAVE_TO_TABLE_TYPES, SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS, SECTIONS_UNKNOWN, SERIES_COLORS, SHARE_NOT_YOURS_LINE, SIGNED_WORD, SOMEBODY, STAGE_RULE_ON_FAIL_LABEL, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, STORE_KEEPS_TIMELINE, STORE_KEPT_LAYOUTS, SUBSCRIPTION_CADENCES, SUBSCRIPTION_CADENCE_LABEL, SUBSCRIPTION_CHANNEL_LABEL, SUBSCRIPTION_CHANNEL_VALUES, SaveToTable, type SaveToTableProps, type SaveToTableSource, type SavedDashboard, type SavedForm, type SavedQuestion, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, ShowListsToggle, type ShownViewReport, SignBlock, type SignBlockProps, SignaturePad, SignatureValue, type SnoozeChoice, type SortStateAction, SortStateControl, type SortStateControlProps, StageRulesSection, type StageRulesSectionProps, type StandardColumn, StandardRecordForm, type StandardRecordFormProps, StepRow, type SubscriptionChannel, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NAME_MAX, TABLE_NOT_REACHABLE, TABLE_TOOLBAR_ROW_CLASS, THE_SYSTEM, TIMELINE_ZOOMS, TableActionHost, TableAsk, type TableAskProps, TableDetails, TableDuplicateDialog, type TableDuplicateDialogProps, TableFoundationSwitch, type TableLane, TablePage, type TablePageActionHost, type TablePageHeaderChrome, type TablePageProps, TablePageSkeleton, type TablePageSource, type TablePickerEntries, type TablePickerEntry, TableReferenceDialog, TableRenameDialog, TableRestoreRefused, type TableRights, TableSettings, type TableSettingsAgent, type TableSettingsProps, type TableSettingsSnapshot, TableShape, TableToolbarSlotContext, TablesHome, type TablesHomeProps, TemplatePreview, type TemplatePreviewProps, type TextPageBlock, type ThroughCondition, type TimelineSettings, TimelineView, type TimelineViewProps, type TimelineZoom, type TitleRepeats, type TrackedVersion, UNREAD_RECORD_LABEL, type UseSystemTableState, VIEW_ADDRESS_KEYS, VIEW_KEYS, VIEW_LAYOUTS, VIEW_NEEDS, VIEW_NOT_SAVED_YET, VISIBILITY_LANES, VISIBILITY_LANE_TITLE, type ViewAddressSort, type ViewAddressState, ViewBar, type ViewBarProps, type ViewKeyDeclaration, type ViewKeyLayout, type ViewKeyWriter, type ViewLayout, type ViewLook, type ViewNeed, type ViewNeedKind, ViewNeeds, type ViewNeedsProps, type ViewSettings, type ViewSettingsPatch, type ViewSort, type ViewSortKey, ViewSwitcher, type ViewSwitcherProps, type VisibilityLane, WITHHELD_RECORD_LABEL, WITHHELD_WORD, WORK_APPROVAL_STATES, WORK_APPROVAL_STATE_LABEL, WORK_DUE_STATES, WORK_INBOX_KINDS, WORK_INBOX_KIND_GROUP_LABEL, WORK_INBOX_KIND_LABEL, WhatYouMayDo, WhereItLives, type WhereItLivesProps, type WhoChanged, WhoChangedSource, WithheldValue, actionForAgent, actorBadge, actorWords, addDays, announceTableArchived, applyLook, archiveConfirmSentence, archivedRowLine, asRefusal, askExampleFor, askQuestion, askableFields, blockFromSpec, bodyFieldOf, bodyForReading, bodyFromKeys, calendarDayLabel, calendarDayOf, cameFromLine, cardTitleField, cardWords, carriesTimeOfDay, cellState, choiceAddition, choiceAskSentence, choiceListPatch, choiceNudgeOf, choiceRowsFrom, chooseSurface, codeDependsRefusal, colorFromTheValue, columnDeclarationFor, columnForField, columnFromName, columnNamesFrom, columnsFrom, combineFilter, combineRows, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, copyNameFor, currencyCodeFor, customFieldRequestProblems, dashboardDeclareArgs, dashboardFromSummary, dateFormatFor, dateText, dayAt, dayKeyOf, daysBetween, declareView, defaultViewOf, descriptionPatch, drawnBelowOnPage, drawnSignatureOf, drillDimensionsOf, drillMeasuresOf, drillPathsOf, drillWhere, duplicateProgressWords, editorKindFor, endingsFromDocument, ensureSystemTable, entityCellValue, entityChoiceColumns, entityNameColumn, entityReferenceSpec, entityShownColumns, entityTableColumns, entityTitleColumn, entityValueText, envelopeFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, fieldsForNewColumns, filterTargets, flatWhere, footerOf, formDeclareArgs, formEmbedSnippet, formFromSummary, formLookDocument, formLookFromDocument, formLookView, formPresentation, formRoutes, formatForField, freeColumnName, freshFormName, gridContextKey, gridContextSnapshot, groupInbox, groupLabel, groupReasons, groupableFields, handOrderLine, handOrderSortState, hasTimePart, hiddenFromLink, hintForAPerson, hintIsMachineIdentity, idsOf, isChoiceAddition, isDateField, isEngineerText, isFoundationTable, isId, isKeptTable, isMachineIdentity, isPage, isParityFieldType, isPlainFieldType, isRelationFieldType, isSignatureField, isValueSet, isViewAddressEmpty, keepLook, keptByTheApp, keyFor, kindsWithNoChoice, laneFor, lastChangeSentence, lookDiffers, lookDocument, lookFromDocument, lookPart, looksLikeId, machineIdentityIn, mayNotRestoreLine, measurableFields, memberName, moveRecordValue, newQuestion, nextInWords, nextSummaryAt, notAChoiceSentence, onlyCandidate, openingRail, openingView, packOverlaps, pageBlocksOf, pagePresentation, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pickableTypeOf, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, previewWords, publiclyAnswerable, questionArchive, questionFromDefinition, questionFromWords, questionSave, questionsOf, railFromParam, readLooks, recordActions, recordLink, recordName, recordNameIn, recordsDataSource, refusal, refusalForAPerson, refusalFromThrown, refusalLineForAPerson, refusalOr, refusedFileName, refusedRowsCsv, renderValue, rescheduledValue, resolveTableStyle, revokeConsequence, rowActionFromAgent, rowLabelChoices, rowName, rowNameIn, runToNotice, sameRecordLikely, sameViewAddress, saveTableDescription, saveToViewPlan, saveViewPatch, scalarText, seedIsSatisfied, shapesOfSource, shareUnavailableReason, signatureFileIn, signatureFileOf, signatureWords, singularNoun, skeletonLayoutFor, snoozeChoices, specFromBlock, standardTokenOf, starterPageBlocks, stepFromAgent, storeDecidesRights, storeKeepsLayout, storePublishesKind, styleFromDecorations, submissionStamp, surfaceChosen, tableName, tableNameProblem, tablePickerEntries, tableReferenceChoices, tableRightsAt, themeFromDocument, titleRepeats, unknownRailLine, unknownViewLine, unreadableKeys, useCanShare, useChoiceNudge, useDrill, useDrillAnswers, useDrillDefinition, useEmbedHandshake, useEnrichCells, useEntityTable, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, usePickerTables, useRecordActionHost, useRecordLabels, useRecordMoves, useRecordRights, useRecordsUi, useRowColorBy, useRowRights, useSystemTable, useTableRights, useTableToolbarSlot, useTemplatePreview, useViewRecords, useWhoChanged, viewActions, viewAddressFromParams, viewAddressToParams, viewDocument, viewFromRow, viewKeysFor, viewNeedFor, viewPatchDocument, viewSettings, viewSettingsFor, viewSettingsPatch, visibilityLaneFor, welcomeFromDocument, whatIsMissing, whatIsMissingForEntityReference, whatTheChoiceListIsMissing, whenWords, whyNotAskable, withheldNoticeOf, withheldSentence, withoutAddition, wordsList };
|