@ai-matrx/records-ui 0.95.16 → 0.95.18

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/dist/index.d.cts CHANGED
@@ -3,8 +3,8 @@ import { ReactNode, KeyboardEvent, ReactElement, ComponentType, RefObject, SVGAt
3
3
  import * as _ai_matrx_records from '@ai-matrx/records';
4
4
  import { RecordScopeContext, EnrichCell, RecordsError, Field, TableDecorations, Uuid as Uuid$1, RowAction, RecordDocument, Table, ReadRow, StoreFilter, PermissionLevel, AggregateFilter, RelationDisplay, WriteConflict, RecordsErrorCode, RecordFilter, RuleExpression, RecordsResult, SavedViewRow, 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, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, HistoryActor, FieldHistoryEntry, DrillDefinition, DrillSource } from '@ai-matrx/records';
5
5
  import { ReversibleAnnouncement } from '@ai-matrx/kit/reversible';
6
- import { W as WhatYouMayDo, T as TableActionHost, O as ObjectAction, a as ObjectActionIcon } from './objectActions-CUR8KdPr.cjs';
7
- export { A as ACTION_CHECKING_ACCESS_REASON, b as ACTION_NOT_HERE_REASON, c as ACTION_NO_ACCESS_REASON, d as ACTION_PLATFORM_TABLE_REASON, B as BuiltOnDestination, C as Capability, D as DEFAULT_ACTION_ORIGIN, K as KERNEL_REASON, L as LEVEL_WORD, N as NOT_ANSWERED_YET, e as OBJECT_ACTION_GROUPS, f as ObjectActionDropdownEntry, g as ObjectActionGroup, h as ObjectActionGroupDef, i as ObjectActionSection, S as STANDARD_VERBS, j as STRIP_FEATURE_ROWS, k as StandardVerbId, l as StripAndRows, m as TableActionSubject, n as TableActionsInput, o as dropdownActionIds, p as dropdownActions, q as groupObjectActions, r as levelNeededFor, s as rightsReason, t as tableActions, u as tableLink, v as toDropdownEntries, w as toStripAndRows, x as whatYouMayDo, y as whatYouMayDoWithTable, z as withExtensions } from './objectActions-CUR8KdPr.cjs';
6
+ import { W as WhatYouMayDo, T as TableActionHost, O as ObjectAction, a as ObjectActionIcon } from './objectActions-XkhxU-DP.cjs';
7
+ export { A as ACTION_CHECKING_ACCESS_REASON, b as ACTION_NOT_HERE_REASON, c as ACTION_NO_ACCESS_REASON, d as ACTION_PLATFORM_TABLE_REASON, B as BuiltOnDestination, C as Capability, D as DEFAULT_ACTION_ORIGIN, K as KERNEL_REASON, L as LEVEL_WORD, N as NOT_ANSWERED_YET, e as OBJECT_ACTION_GROUPS, f as ObjectActionDropdownEntry, g as ObjectActionGroup, h as ObjectActionGroupDef, i as ObjectActionSection, S as STANDARD_VERBS, j as STRIP_FEATURE_ROWS, k as StandardVerbId, l as StripAndRows, m as TableActionSubject, n as TableActionsInput, o as dropdownActionIds, p as dropdownActions, q as groupObjectActions, r as levelNeededFor, s as rightsReason, t as tableActions, u as tableLink, v as toDropdownEntries, w as toStripAndRows, x as whatYouMayDo, y as whatYouMayDoWithTable, z as withExtensions } from './objectActions-XkhxU-DP.cjs';
8
8
  import { Uuid, Field as Field$1, ReadRow as ReadRow$1, StoreFilter as StoreFilter$1, useRecordsClient } from '@ai-matrx/records/react';
9
9
  import { TableStyle, GroupAggregateSpec, GroupOrder, ChoiceColorLookup, MatrxTableCardProps, StyleColor, MatrxDrillDimension, MatrxDrillMeasure, MatrxDrillFilter, MatrxDrillQuestion, MatrxDataTableDrillConfig, MatrxDrillAnswers } from '@ai-matrx/design-system/data-table';
10
10
  import { FieldFormatConfig } from '@ai-matrx/design-system/field-formats';
@@ -214,6 +214,8 @@ type GridGrouping = {
214
214
  order?: GroupOrder;
215
215
  /** The sections this view keeps shut, by the primitive's own group key. */
216
216
  collapsed?: string[];
217
+ /** The grouped column drawn as a column too. Absent = it steps aside (the headers name its value). */
218
+ showColumn?: boolean;
217
219
  /**
218
220
  * SUB-GROUPS (lane S1-PRIME VIEW-KEYS; ui-bench LISTS "sub-grouping"): up to two more levels
219
221
  * inside each section, by Field key. At most three levels in all — the store refuses a fourth
@@ -1912,7 +1914,7 @@ declare const LAYOUT_FIELD_KIND: Record<ViewLayout, ViewNeedKind | null>;
1912
1914
  * WHICH VIEW A LINK NAMES — the address bar as a first-class control.
1913
1915
  *
1914
1916
  * 🚨 THE DEFECT THIS CLOSES (lane FRONT-DOOR, 2026-09-21; VERIFIER-8 HIGH-2).
1915
- * `/data-v2/<table>?view=kanban` returned 200 and rendered THE GRID. The
1917
+ * `/data/<table>?view=kanban` returned 200 and rendered THE GRID. The
1916
1918
  * switcher was there, the four buttons worked, and the parameter was read by
1917
1919
  * nobody — so a person who bookmarked a board, or sent one to a colleague, got
1918
1920
  * a grid, and nothing on the screen said the view had been dropped. A link that
@@ -5692,7 +5694,7 @@ interface TablesHomeProps {
5692
5694
  */
5693
5695
  makingOnly?: boolean | undefined;
5694
5696
  /**
5695
- * THE HOST'S OWN BUTTONS ASK (merged-grid review 2, J6: "New table" sat ~1,700 px down /data-v2,
5697
+ * THE HOST'S OWN BUTTONS ASK (merged-grid review 2, J6: "New table" sat ~1,700 px down /data,
5696
5698
  * then as a row of its own). A host whose page header already has an action bar puts "New table"
5697
5699
  * and "Start from an example" THERE and passes how many times each was pressed; this list then
5698
5700
  * draws no button row of its own, and opens the name box / the examples when asked. Absent: the
@@ -5770,7 +5772,7 @@ interface TablePageProps {
5770
5772
  *
5771
5773
  * 🚨 THE DEAD LINK THIS CLOSES (lane SCREENS-2, 2026-09-20). `ActionInbox` has always
5772
5774
  * handed its host `onOpenRecord(recordId, tableId)`, and the app has always routed that to
5773
- * `/data-v2/<table>?record=<record>` — and NOTHING read the parameter. Pressing Open on a
5775
+ * `/data/<table>?record=<record>` — and NOTHING read the parameter. Pressing Open on a
5774
5776
  * checklist step, an assignment or an agent's proposal landed you on the table with the
5775
5777
  * record still shut, which is the inbox not finishing the sentence it started. Measured in
5776
5778
  * the real app on a dental practice's onboarding steps.
@@ -5849,7 +5851,7 @@ interface TablePageProps {
5849
5851
  *
5850
5852
  * 🚨 THE DEAD LINK THIS CLOSES (lane HUB-FIX, 2026-09-23; VERIFIER-14 item 2).
5851
5853
  * The organization hub lists every form, digest, portal and outside share of
5852
- * an organization, and every one of those rows opened `/data-v2/<table>` —
5854
+ * an organization, and every one of those rows opened `/data/<table>` —
5853
5855
  * the table's GRID — because nothing in this page could be addressed below
5854
5856
  * the layout: the rails were `useState` with no prop and no URL spelling. A
5855
5857
  * person who clicked "Spring drain-cleaning intake" landed on 400 rows of jobs
@@ -6405,7 +6407,7 @@ interface RecordActionsInput {
6405
6407
  rights: WhatYouMayDo;
6406
6408
  host: RecordActionHost;
6407
6409
  }
6408
- /** The one link to a record: the table page with the record open, `<origin>/data-v2/<table>?record=<id>`. */
6410
+ /** The one link to a record: the table page with the record open, `<origin>/data/<table>?record=<id>`. */
6409
6411
  declare function recordLink(tableId: string, recordId: string, origin?: string): string;
6410
6412
  /**
6411
6413
  * THE RECORD'S ACTIONS, in the one order. Same ids, same order, same verbs for every seat and every
package/dist/index.d.ts CHANGED
@@ -3,8 +3,8 @@ import { ReactNode, KeyboardEvent, ReactElement, ComponentType, RefObject, SVGAt
3
3
  import * as _ai_matrx_records from '@ai-matrx/records';
4
4
  import { RecordScopeContext, EnrichCell, RecordsError, Field, TableDecorations, Uuid as Uuid$1, RowAction, RecordDocument, Table, ReadRow, StoreFilter, PermissionLevel, AggregateFilter, RelationDisplay, WriteConflict, RecordsErrorCode, RecordFilter, RuleExpression, RecordsResult, SavedViewRow, 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, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, HistoryActor, FieldHistoryEntry, DrillDefinition, DrillSource } from '@ai-matrx/records';
5
5
  import { ReversibleAnnouncement } from '@ai-matrx/kit/reversible';
6
- import { W as WhatYouMayDo, T as TableActionHost, O as ObjectAction, a as ObjectActionIcon } from './objectActions-CUR8KdPr.js';
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-CUR8KdPr.js';
6
+ import { W as WhatYouMayDo, T as TableActionHost, O as ObjectAction, a as ObjectActionIcon } from './objectActions-XkhxU-DP.js';
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
8
  import { Uuid, Field as Field$1, ReadRow as ReadRow$1, StoreFilter as StoreFilter$1, useRecordsClient } from '@ai-matrx/records/react';
9
9
  import { TableStyle, GroupAggregateSpec, GroupOrder, ChoiceColorLookup, MatrxTableCardProps, StyleColor, MatrxDrillDimension, MatrxDrillMeasure, MatrxDrillFilter, MatrxDrillQuestion, MatrxDataTableDrillConfig, MatrxDrillAnswers } from '@ai-matrx/design-system/data-table';
10
10
  import { FieldFormatConfig } from '@ai-matrx/design-system/field-formats';
@@ -214,6 +214,8 @@ type GridGrouping = {
214
214
  order?: GroupOrder;
215
215
  /** The sections this view keeps shut, by the primitive's own group key. */
216
216
  collapsed?: string[];
217
+ /** The grouped column drawn as a column too. Absent = it steps aside (the headers name its value). */
218
+ showColumn?: boolean;
217
219
  /**
218
220
  * SUB-GROUPS (lane S1-PRIME VIEW-KEYS; ui-bench LISTS "sub-grouping"): up to two more levels
219
221
  * inside each section, by Field key. At most three levels in all — the store refuses a fourth
@@ -1912,7 +1914,7 @@ declare const LAYOUT_FIELD_KIND: Record<ViewLayout, ViewNeedKind | null>;
1912
1914
  * WHICH VIEW A LINK NAMES — the address bar as a first-class control.
1913
1915
  *
1914
1916
  * 🚨 THE DEFECT THIS CLOSES (lane FRONT-DOOR, 2026-09-21; VERIFIER-8 HIGH-2).
1915
- * `/data-v2/<table>?view=kanban` returned 200 and rendered THE GRID. The
1917
+ * `/data/<table>?view=kanban` returned 200 and rendered THE GRID. The
1916
1918
  * switcher was there, the four buttons worked, and the parameter was read by
1917
1919
  * nobody — so a person who bookmarked a board, or sent one to a colleague, got
1918
1920
  * a grid, and nothing on the screen said the view had been dropped. A link that
@@ -5692,7 +5694,7 @@ interface TablesHomeProps {
5692
5694
  */
5693
5695
  makingOnly?: boolean | undefined;
5694
5696
  /**
5695
- * THE HOST'S OWN BUTTONS ASK (merged-grid review 2, J6: "New table" sat ~1,700 px down /data-v2,
5697
+ * THE HOST'S OWN BUTTONS ASK (merged-grid review 2, J6: "New table" sat ~1,700 px down /data,
5696
5698
  * then as a row of its own). A host whose page header already has an action bar puts "New table"
5697
5699
  * and "Start from an example" THERE and passes how many times each was pressed; this list then
5698
5700
  * draws no button row of its own, and opens the name box / the examples when asked. Absent: the
@@ -5770,7 +5772,7 @@ interface TablePageProps {
5770
5772
  *
5771
5773
  * 🚨 THE DEAD LINK THIS CLOSES (lane SCREENS-2, 2026-09-20). `ActionInbox` has always
5772
5774
  * handed its host `onOpenRecord(recordId, tableId)`, and the app has always routed that to
5773
- * `/data-v2/<table>?record=<record>` — and NOTHING read the parameter. Pressing Open on a
5775
+ * `/data/<table>?record=<record>` — and NOTHING read the parameter. Pressing Open on a
5774
5776
  * checklist step, an assignment or an agent's proposal landed you on the table with the
5775
5777
  * record still shut, which is the inbox not finishing the sentence it started. Measured in
5776
5778
  * the real app on a dental practice's onboarding steps.
@@ -5849,7 +5851,7 @@ interface TablePageProps {
5849
5851
  *
5850
5852
  * 🚨 THE DEAD LINK THIS CLOSES (lane HUB-FIX, 2026-09-23; VERIFIER-14 item 2).
5851
5853
  * The organization hub lists every form, digest, portal and outside share of
5852
- * an organization, and every one of those rows opened `/data-v2/<table>` —
5854
+ * an organization, and every one of those rows opened `/data/<table>` —
5853
5855
  * the table's GRID — because nothing in this page could be addressed below
5854
5856
  * the layout: the rails were `useState` with no prop and no URL spelling. A
5855
5857
  * person who clicked "Spring drain-cleaning intake" landed on 400 rows of jobs
@@ -6405,7 +6407,7 @@ interface RecordActionsInput {
6405
6407
  rights: WhatYouMayDo;
6406
6408
  host: RecordActionHost;
6407
6409
  }
6408
- /** The one link to a record: the table page with the record open, `<origin>/data-v2/<table>?record=<id>`. */
6410
+ /** The one link to a record: the table page with the record open, `<origin>/data/<table>?record=<id>`. */
6409
6411
  declare function recordLink(tableId: string, recordId: string, origin?: string): string;
6410
6412
  /**
6411
6413
  * THE RECORD'S ACTIONS, in the one order. Same ids, same order, same verbs for every seat and every
package/dist/index.js CHANGED
@@ -3262,6 +3262,7 @@ function parseGrouping(raw) {
3262
3262
  const collapsed = raw["collapsed"].filter((k) => typeof k === "string");
3263
3263
  if (collapsed.length > 0) out.collapsed = collapsed;
3264
3264
  }
3265
+ if (raw["showColumn"] === true) out.showColumn = true;
3265
3266
  if (Array.isArray(raw["then"])) {
3266
3267
  const then = [];
3267
3268
  for (const level of raw["then"]) {
@@ -20192,6 +20193,7 @@ function GridBody({
20192
20193
  ...facts ? { groupFacts: facts } : {},
20193
20194
  ...!rowsGrouped && view?.order ? { order: view.order } : {},
20194
20195
  ...view?.collapsed ? { collapsed: view.collapsed } : {},
20196
+ ...view?.showColumn ? { showColumn: true } : {},
20195
20197
  ...onPresentationChange ? {
20196
20198
  onColumnIdChange: (columnId) => {
20197
20199
  if (columnId === null) {
@@ -20212,6 +20214,12 @@ function GridBody({
20212
20214
  const current = presentation.grouping;
20213
20215
  if (!current) return;
20214
20216
  writeLook({ ...presentation, grouping: { ...current, collapsed } });
20217
+ },
20218
+ onShowColumnChange: (show) => {
20219
+ const current = presentation.grouping;
20220
+ if (!current) return;
20221
+ const { showColumn: _was, ...rest } = current;
20222
+ writeLook({ ...presentation, grouping: show ? { ...rest, showColumn: true } : rest });
20215
20223
  }
20216
20224
  } : {}
20217
20225
  };
@@ -21963,7 +21971,7 @@ var OBJECT_ACTION_GROUPS = [
21963
21971
  var GROUP_IDS = new Set(OBJECT_ACTION_GROUPS.map((g) => g.id));
21964
21972
  var DEFAULT_ACTION_ORIGIN = "https://www.aimatrx.com";
21965
21973
  function tableLink(tableId, origin = DEFAULT_ACTION_ORIGIN) {
21966
- return `${origin.replace(/\/+$/, "")}/data-v2/${encodeURIComponent(tableId)}`;
21974
+ return `${origin.replace(/\/+$/, "")}/data/${encodeURIComponent(tableId)}`;
21967
21975
  }
21968
21976
  function makeDefaultWords(layoutLabel) {
21969
21977
  return layoutLabel ? `Make ${layoutLabel} the default` : "Make this the default";
@@ -25697,7 +25705,7 @@ import {
25697
25705
 
25698
25706
  // src/recordActions.ts
25699
25707
  function recordLink(tableId, recordId, origin = DEFAULT_ACTION_ORIGIN) {
25700
- return `${origin.replace(/\/+$/, "")}/data-v2/${encodeURIComponent(tableId)}?record=${encodeURIComponent(recordId)}`;
25708
+ return `${origin.replace(/\/+$/, "")}/data/${encodeURIComponent(tableId)}?record=${encodeURIComponent(recordId)}`;
25701
25709
  }
25702
25710
  var NOOP2 = () => {
25703
25711
  };